通过bitmap改变图片的大小

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

下面就讲下实现过程

一、通过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;
}

 

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

 

 

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

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

 

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
改变Android Bitmap大小,可以使用Bitmap.createScaledBitmap()方法来缩放图像。该方法需要原始位图、新宽度和新高度作为参数,并返回一个新的位图对象,该对象具有指定的宽度和高度。 以下是一个示例代码片段,可以将原始位图缩放为新的大小: ```java Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.original_image); int width = originalBitmap.getWidth(); int height = originalBitmap.getHeight(); int newWidth = 300; int newHeight = 300; float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); Bitmap scaledBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, width, height, matrix, false); ``` 在上面的代码,我们首先使用BitmapFactory.decodeResource()方法从资源文件获取原始位图。然后,我们获取原始位图的宽度和高度,并计算新的宽度和高度。接下来,我们使用Matrix.postScale()方法创建一个变换矩阵,该矩阵将原始位图缩放到新的大小。最后,我们使用Bitmap.createBitmap()方法创建一个新的位图对象,该对象具有指定的宽度和高度。 请注意,使用Bitmap.createScaledBitmap()会在内存创建新的位图对象,因此可能会占用大量内存。如果内存使用量是一个问题,可以考虑使用inSampleSize属性来加载缩小的位图,或者使用更高级的技术,如OpenGL ES纹理渲染。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值