1.放大缩小图片
public static Bitmap zoomBitmap(Bitmap bitmap,int w,int h){
02
int width = bitmap.getWidth();
03
int height = bitmap.getHeight();
04
Matrix matrix = new Matrix();
05
float scaleWidht = ((float)w / width);
06
float scaleHeight = ((float)h / height);
07
matrix.postScale(scaleWidht, scaleHeight);
08
Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
09
return newbmp;
10
}
2.获得圆角图片的方法
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){
02
03
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
04
Canvas canvas = new Canvas(output);
05
06
final int color = 0xff424242;
07
final Paint paint = new Paint();
08
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
09
final RectF rectF = new RectF(rect);
10
11
paint.setAntiAlias(true);
12
canvas.drawARGB(0, 0, 0, 0);
13
paint.setColor(color);
14
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
15
16
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
17
canvas.drawBitmap(bitmap, rect, rect, paint);
18
19
return output;
20
}
3.获得带倒影的图片方法
public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){
02
final int reflectionGap = 4;
03
int width = bitmap.getWidth();
04
int height = bitmap.getHeight();
05
06
Matrix matrix = new Matrix();
07
matrix.preScale(1, -1);
08
09
Bitmap reflectionImage = Bitmap.createBitmap(bitmap,0, height/2, width, height/2, matrix, false);
10
11
Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);
12
13
Canvas canvas = new Canvas(bitmapWithReflection);
14
canvas.drawBitmap(bitmap, 0, 0, null);
15
Paint deafalutPaint = new Paint();
16
canvas.drawRect(0, height,width,height + reflectionGap, deafalutPaint);
17
18
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
19
20
Paint paint = new Paint();
21
LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,
01
bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
02
paint.setShader(shader);
03
// Set the Transfer mode to be porter duff and destination in
04
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
05
// Draw a rectangle using the paint with our linear gradient
06
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
07
+ reflectionGap, paint);
08
09
return bitmapWithReflection;
10
}
4.将Drawable转化为Bitmap
public static Bitmap drawableToBitmap(Drawable drawable){
02
int width = drawable.getIntrinsicWidth();
03
int height = drawable.getIntrinsicHeight();
04
Bitmap bitmap = Bitmap.createBitmap(width, height,
05
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565);
06
Canvas canvas = new Canvas(bitmap);
07
drawable.setBounds(0,0,width,height);
08
drawable.draw(canvas);
09
return bitmap;
10
}