Android 图像处理(类型转换,比例缩放,倒影,圆角)
2013年03月12日
⁄ 综合
⁄ 共 3308字 ⁄ 字号
小 中 大
-
-
-
-
-
-
-
-
-
public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h) {
-
int width = bitmap.getWidth();
-
int height = bitmap.getHeight();
-
Matrix matrix = new Matrix();
-
float scaleWidht = ((float) w / width);
-
float scaleHeight = ((float) h / height);
-
matrix.postScale(scaleWidht, scaleHeight);
-
Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height,
-
matrix, true);
-
return newbmp;
-
}
-
-
-
-
-
-
-
-
-
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) {
-
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
-
.getHeight(), Config.ARGB_8888);
-
Canvas canvas = new Canvas(output);
-
final int color = 0xff424242;
-
final Paint paint = new Paint();
-
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
-
final RectF rectF = new RectF(rect);
-
paint.setAntiAlias(true);
-
canvas.drawARGB(0, 0, 0, 0);
-
paint.setColor(color);
-
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
-
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
-
canvas.drawBitmap(bitmap, rect, rect, paint);
-
return output;
-
}
-
-
-
-
-
-
-
-
public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap) {
-
final int reflectionGap = 4;
-
int width = bitmap.getWidth();
-
int height = bitmap.getHeight();
-
Matrix matrix = new Matrix();
-
matrix.preScale(1, -1);
-
Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height / 2,
-
width, height / 2, matrix, false);
-
Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
-
(height + height / 2), Config.ARGB_8888);
-
Canvas canvas = new Canvas(bitmapWithReflection);
-
canvas.drawBitmap(bitmap, 0, 0, null);
-
Paint deafalutPaint = new Paint();
-
canvas
-
.drawRect(0, height, width, height + reflectionGap,
-
deafalutPaint);
-
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
-
Paint paint = new Paint();
-
LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,
-
bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff,
-
0x00ffffff, TileMode.CLAMP);
-
paint.setShader(shader);
-
-
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
-
-
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
-
+ reflectionGap, paint);
-
return bitmapWithReflection;
-
}
-
-
-
-
-
-
-
-
public static Bitmap drawableToBitmap(Drawable drawable) {
-
int width = drawable.getIntrinsicWidth();
-
int height = drawable.getIntrinsicHeight();
-
Bitmap bitmap = Bitmap.createBitmap(width, height, drawable
-
.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
-
: Bitmap.Config.RGB_565);
-
Canvas canvas = new Canvas(bitmap);
-
drawable.setBounds(0, 0, width, height);
-
drawable.draw(canvas);
-
return bitmap;
-
}