Answers:
快速浏览SKIA源代码表明(至少默认情况下)FILTER标志使它进行了直接的双线性插值。查看Wikipedia或您喜欢的图形参考,以了解预期的结果。传统上,在放大图像时要进行双线性或双三次插值,而在缩小图像时要进行面积平均。我得到的印象是(尽管很高兴得到纠正),Android / Skia在不进行筛选的情况下进行简单的子采样,因此即使在缩减尺寸的情况下,您也有可能通过筛选获得更好的结果。(有另一种方法可以通过插值获得高质量的缩小尺寸,涉及一系列缩小50%的比例。请参见http://today.java.net/pub/a/today/2007/04/03/perils-of- image-getscaledinstance.html 有关详细信息。)
为了扩大Karan的答案:作为一般规则,你将不会看到任何区别,如果你缩放图像下来,但是你会如果你缩放来了。
通过filter = false
将导致块状像素化图像。
通过filter = true
将使您的边缘更平滑。
但是,正如EIYeante在评论中指出的那样,您可能仍会发现有所不同。这是他们的示例图片。
bm = MediaStore.Images.Media.getBitmap(this.getContentResolver(), intent.getData()); resizedBitmap = Bitmap.createScaledBitmap(bm, 150, 150, true); resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, out);
我只是在更改filter参数。
过滤器将设置FILTER_BITMAP_FLAG以进行绘画,这会在根据您提供的值转换位图时影响位图的采样。