使用Bitmap createBitmap()裁剪图片

前言

项目开发需要对一些图片进行裁剪操作(ps:UI强迫症) 哎 缺乏经验就四处百度了一下 差不多都是用Bitmap createBitmap()相关api操作 由于自己的粗心大意 一直没能把图片裁剪出来 折腾了好久 同时也得到些经验 记录在这里 帮助有需要的同学

  • 在使用相关功能性的api前还是需要进源码了解了解 首先常用的裁剪图片的有这2个 其实最终还是调用了第二个

     /**
     * @param source   需要裁剪的bitmap
     * @param x        裁剪x点起始坐标
     * @param y        裁剪y点起始坐标    
     * @param width    裁剪bitmap的宽度
     * @param height   裁剪bitmap的高度
     * @return         返回一个裁剪过的bitmap 或者为操作过的(原)bitmap
    

public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height) {
return createBitmap(source, x, y, width, height, null, false);
}

/*
* @param source 需要裁剪的bitmap
* @param x 裁剪x点起始坐标
* @param y 裁剪y点起始坐标
* @param width 裁剪bitmap的宽度
* @param height 裁剪bitmap的高度
* @param m 针对裁剪后的bitmap进行矩阵缩放(可选)
* @param filter true(对原bitmap进行裁剪操作)
* @return A 返回一个裁剪过的bitmap 或者为操作过的(原)bitmap
*/
public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height,
Matrix m, boolean filter) {

```
使用
- 简单裁剪操作

```

Bitmap bitmap=ZXingUtils.createQRCode("www.baidu.com",100,100);
Bitmap bitmap1 = Bitmap.createBitmap(bitmap, 12, 12, bitmap.getWidth() - 25, bitmap.getHeight() - 25);
imageView.setImageBitmap(bitmap);
imageView2.setImageBitmap(bitmap1);
```

使用Bitmap createBitmap()裁剪图片_第1张图片

  • 缩放裁剪
Bitmap bitmap=ZXingUtils.createQRCode("www.baidu.com",100,100);
Matrix matrix=new Matrix();
//获取宽度缩放比例
float wscal = (float) (bitmap.getWidth()*1.0 / (bitmap.getWidth() - 25));
//获取高度的缩放比例
float hscal = (float) (bitmap.getHeight()*1.0 / (bitmap.getHeight() - 25));
matrix.postScale(wscal,hscal);
final Bitmap bitmap1 = Bitmap.createBitmap(bitmap, 12, 12, bitmap.getWidth() - 25, bitmap.getHeight() - 25,matrix,true);
使用Bitmap createBitmap()裁剪图片_第2张图片
  • 注意 :
    裁剪图片的宽度和高度一定要小于原图的宽度和高度 不然是会报错的 千万别像我一样把这段代码try{}来了

    if (x + width > source.getWidth()) {
            throw new IllegalArgumentException("x + width must be <= bitmap.width()");
        }
    if (y + height > source.getHeight()) {
            throw new IllegalArgumentException("y + height must be <= bitmap.height()");
        }
    

你可能感兴趣的:(使用Bitmap createBitmap()裁剪图片)