本篇在《利用bitmap加载图片文件并表示》的基础上追加Bitmap常见操作的Domo。
分别实现图像旋转,图像剪切,图像缩放,切圆角操作。
MyBitmap文件追加如下代码:
public static Bitmap zoombitmap(Bitmap bitmap, int reqWidth, int reqHeight){
int width = bitmap.getWidth();
int height = bitmap.getHeight();
float scaleWidth = (float)(reqWidth)/width;
float scaleHeight = (float)(reqHeight)/height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth,scaleHeight);
Bitmap newBitmap = Bitmap.createBitmap(
bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
return newBitmap;
}
public static Bitmap rotateBitmap(Bitmap bitmap, float rotateDegree){
Matrix matrix = new Matrix();
matrix.postRotate(rotateDegree);
Bitmap newBitmap = Bitmap.createBitmap(
bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
return newBitmap;
}
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx){
Bitmap output = Bitmap.createBitmap(
bitmap.getWidth(),bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
int color = 0xff424242;
Paint paint = new Paint();
Rect rect = new Rect(0,0,bitmap.getWidth(),bitmap.getHeight());
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(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap,rect,rect,paint);
return output;
}
public static Bitmap clipBitMap(Bitmap bitmap, int x, int y,int reqWidth, int reqHeight){
Bitmap newBitmap = Bitmap.createBitmap(
bitmap, x, y, reqWidth, reqHeight);
return newBitmap;
}
MainActivity中追加点击监听的处理:
int reqWidth = 140;
int reqHeight = 140;
int changeValue = -10;
int rotateDegree = 0;
int roundPx = 10;
@Override
public void onClick(View v) {
Bitmap bitmap;
switch (v.getId()) {
case R.id.imageView1:
break;
case R.id.imageView2:
break;
case R.id.imageView3:
bitmap = MyBitmap.clipBitMap(bitmap3,20,20,140,140);
imageView3.setImageBitmap(bitmap);
break;
case R.id.imageView4:
roundPx+=10;
bitmap = MyBitmap.getRoundedCornerBitmap(bitmap4,roundPx);
imageView4.setImageBitmap(bitmap);
break;
case R.id.imageView5:
rotateDegree+=90;
bitmap = MyBitmap.rotateBitmap(bitmap5,rotateDegree);
imageView5.setImageBitmap(bitmap);
break;
case R.id.imageView6:
if((reqWidth>10)&&(changeValue==-10)){
changeValue = -10;
}else if(reqWidth==10){
changeValue = 10;
}else if(reqWidth==160){
changeValue = -10;
}
reqWidth+=changeValue;
reqHeight+=changeValue;
bitmap = MyBitmap.zoombitmap(bitmap6,reqWidth,reqHeight);
imageView6.setImageBitmap(bitmap);
break;
default:
break;
}
}
实现效果如下:
Domo代码: