保留图片的宽高比,实现宽高等比例缩放

在开发中图片缩放是经常要用的了,近日需要实现一个漫画书项目,在最后阅读漫画界面出现了图片不是被横向拉伸的过大就是被纵向拉伸的过长,刚开始寄希望于ImageView的ScaleType和Imageloader的自定义拉伸配置,结果虽然基本能等比例缩放,但是却出现了另外一个很恼火的Bug—–图片加载卡顿和裁剪不合适,最后在网上寻找到相关等比例拉伸代码,修改后,完美解决,代码如下:

 public static Bitmap scaleImage( Context content,Bitmap bm){
        //获得屏幕的宽高

        WindowManager wm1 =( (Activity)content).getWindowManager();
        int screenWidth = wm1.getDefaultDisplay().getWidth()-10;
        //int screenHeigh = wm1.getDefaultDisplay().getHeight();


        // 获得图片的宽高
        int width = bm.getWidth();
        int height = bm.getHeight();
        // 计算缩放比例
        float scaleWidth = ((float) screenWidth) / width;
        float scaleHeight=scaleWidth;
        // float scaleHeight = ((float) screenHeigh) / height;
        // 取得想要缩放的matrix参数
        Matrix matrix = new Matrix();
        matrix.postScale(scaleWidth, scaleHeight);
        // 得到新的图片
        Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
        return newbm;
    }

上面代码根据需求修改过,可以看到这里首先获得了屏幕的宽高,然后计算缩放比例,最后调用matrix.postScale()方法得到宽高缩放的矩阵,然后通过重绘bitmap实现宽高等比例缩放。
当然通过上面的代码也可以其他比例的缩放,这里就不啰嗦了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值