轻松看懂如何通过调整Bitmap来调整图片尺寸

/*new_w:想要得到的图片尺寸宽;new_h:想要得到的图片尺寸高

bitmap:输入的Bitmap型变量

 

public static Bitmap imageScale(Bitmap bitmap, int new_w,new_h) {

//先通过Bitmap对象调用getWidth(),getHeight();方法得到原始输入bitmap的尺寸(也就是原始没改变尺寸之前的图片宽和高)

//这里如果你已经知道你的输入尺寸为多大,也可以直接替换int型整数,但是建议用代码原始尺寸

                       int src_w = bitmap.getWidth();
                       int src_h = bitmap.getHeight();

//获取缩放比例,拿原始输入的长宽和想要缩放的长宽求比例,注意谁在前谁在后都可以,例如最终希望的尺寸在分子,原始尺寸在分母,比值大于一,说明获取的是放大比例;小于一,则是缩小比例

//同理,分子和分母相反,原始图像尺寸在分子,要得到的尺寸在分母,若比值大于一,则获取的是缩小比例,反之获取的是放大比例
                      float scale_w = ((float) new_w) / src_w;
                      float scale_h = ((float) new_h) / src_h;

//新建Matrix类的一个对象,用来存储变换后的像素矩阵值,暂时存储作用
                      Matrix matrix = new Matrix();

//利用矩阵类对象调用方法postScale进行尺度变换,两个参数为尺度变换的宽,高对应的缩放比例
                     matrix.postScale(scale_w, scale_h);

//科普一下,如果想要旋转图像,则用矩阵类对象调用方法postRotate(float a);其中参数a是需要旋转的角度,如matrix.postRotate(45);

//再调用Bitmap类中的方法createBitmap( bitmap,0,0,src_w, src_h, matrix,true),解释一下,第一个参数是传进来原始的Bitmap,两个参数0暂时用不到,src_w, src_h原图像的尺寸;尺寸变换后的矩阵变量,后面true,返回的也是Bitmap对象
                     Bitmap bihuanbmp = Bitmap.createBitmap(bitmap, 0, 0, src_w, src_h, matrix,true);

                     return  bihuanbmp ;

//补充,上面我返回的是Bitmap类型,我工作的需要,如果大家需要直接将Bitmap类输出为图片,直接加上return new BitmapDrawable(bihuanbmp);当然如果返回的是BitmapDrawable(bihuanbmp),则方法前面返回的就不是Bitmap类型,应该改为Drawable
}

 

posted @ 2019-05-22 14:35  浪哥学习笔记  阅读(4300)  评论(0编辑  收藏  举报