Android图像介绍——Bitmap常用操作

本篇在《利用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代码:

Android图像介绍-Bitmap常用操作资源-CSDN文库

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值