Bitmap 使用 Matix 进行缩放时 filter 参数的含义

方法:

public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter) {
    ...
}

filter:
在这里插入图片描述

是否对源 bitmap 执行滤波处理。
只在 matrix 包含大于要转换的内容时应用。(感觉上好像是说在放大时才有效)

滤波处理的含义,可参考这里:图像与滤波
大致上,就是按处理波的方式,对图片进行处理。

该方法中,filter 的使用在这里:

paint.setFilterBitmap(filter);

给 Paint 添加了 FILTER_BITMAP_FLAG 的 flag。
这个 flag 的含义是,是否执行双线性采样。

实际效果:
给一张图片放大数倍,filter 分别为 false 和 true:
在这里插入图片描述 在这里插入图片描述

可以看出,filter 会对图片进行光滑、模糊操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android中,你可以使用BitmapFactory.Options类的inSampleSize属性来实现同等比例和压Bitmap的功能。具体步骤如下: 1. 通过BitmapFactory.decodeFile或BitmapFactory.decodeStream方法获取原始Bitmap对象。 2. 计算出比例,公式为:inSampleSize = 原始宽度 / 目标宽度(或者原始高度 / 目标高度,取两者中比例较小的值)。 3. 设置BitmapFactory.Options对象的inSampleSize属性为计算出的比例。 4. 通过BitmapFactory.decodeFile或BitmapFactory.decodeStream方法,传入设置了inSampleSize属性的BitmapFactory.Options对象,获取压后的Bitmap对象。 下面是示例代码: ```java public static Bitmap compressBitmap(String filePath, int targetWidth, int targetHeight) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, options); int width = options.outWidth; int height = options.outHeight; int inSampleSize = 1; if (width > targetWidth || height > targetHeight) { int widthRatio = Math.round((float) width / (float) targetWidth); int heightRatio = Math.round((float) height / (float) targetHeight); inSampleSize = Math.min(widthRatio, heightRatio); } options.inJustDecodeBounds = false; options.inSampleSize = inSampleSize; Bitmap compressedBitmap = BitmapFactory.decodeFile(filePath, options); return compressedBitmap; } ``` 在上述示例代码中,compressBitmap方法接受三个参数:文件路径、目标宽度和目标高度。方法内部首先通过设置options.inJustDecodeBounds为true来获取原始Bitmap对象的宽度和高度,然后根据目标宽度和高度计算出比例inSampleSize,最后再通过设置options.inSampleSize属性来获取压后的Bitmap对象。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值