通过bitmap改变图片的大小

作者: shenshizhong | 来源:发表于2017-06-30 18:47 被阅读158次

    有时候需要在项目中改变图片的大小,那么在代码中我们怎么改变图片的大小呢?

    下面就讲下实现过程

    一、通过BitmapFactory获取原始图片

    二、获取图片的宽、高

    三、设置想要的宽、高大小

    四、计算压缩的比率

    五、获得缩放的matrix

    六、获取新的bitmap

    其实很简单,主要就是api的使用。下面就贴出代码

    private Bitmap changeBitmapSize() {

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);

    int width = bitmap.getWidth();

    int height = bitmap.getHeight();

    Log.e("width","width:"+width);

    Log.e("height","height:"+height);

    //设置想要的大小

    int newWidth=30;

    int newHeight=30;

    //计算压缩的比率

    float scaleWidth=((float)newWidth)/width;

    float scaleHeight=((float)newHeight)/height;

    //获取想要缩放的matrix

    Matrix matrix = new Matrix();

    matrix.postScale(scaleWidth,scaleHeight);

    //获取新的bitmap

    bitmap=Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);

    bitmap.getWidth();

    bitmap.getHeight();

    Log.e("newWidth","newWidth"+bitmap.getWidth());

    Log.e("newHeight","newHeight"+bitmap.getHeight());

    return bitmap;

    }

    使用的时候直接调用就行。使用示例:

    ps:欢迎关注

    公众号:android_dkx

    我的博客:http://blog.csdn.NET/shenshizhong

    我的简书:http://www.jianshu.com/users/345daf0211ad/latest_articles

    相关文章

      网友评论

      • HalouFeng:bitmap获取的大小跟图片放置在不同的文件夹下面有关系的。。options会获取到图片的原始宽高
        shenshizhong:是的,程序会加载密度更接近的图片的。上面提到用bitmap改变图片大小,只能用于小图片。顺便说下,如果是大图的情况,最好使用options。可以有效的防止OOM。后面我将options的使用再加一下。最后感谢你的评论。
      • HalouFeng:请问下,为什么要通过bitmap来获取图片的宽高,而不是通过options来获取呢

      本文标题:通过bitmap改变图片的大小

      本文链接:https://www.haomeiwen.com/subject/nuyicxtx.html