createScaledBitmap的过滤参数是做什么的?
android.graphics.Bitmap.createScaledBitmap
的声明是
public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)
但是,文档没有解释任何参数。 除了boolean filter
,它们都非常明显。 有谁知道它是做什么的?
通过SKIA源代码的快速挖掘表明(至less在默认情况下)FILTER标志使它做一个简单的双线性插值。 检查维基百科或您最喜爱的graphics参考,看看预期的后果是什么。 传统上,您希望在缩放图像时进行双线性或双三次插值,并在缩小图像时进行面积平均。 我得到的印象(虽然我很高兴能被纠正),Android / Skia在没有过滤的情况下进行小型化时会进行简单的二次采样,所以即使缩小规模,您也可能从过滤中获得更好的结果。 (有一种替代方法可以通过插值来实现高质量的缩小,涉及到一系列缩减50%的缩减。参见http://today.java.net/pub/a/today/2007/04/03/perils-of- image-getscaledinstance.html获取详细信息。)
为了扩大Karan的答案:一般来说,如果你缩小图像,你不会看到任何区别,但是如果你扩大了图像的话,你会看到。
传递filter = false
将导致块状,像素化的图像。
传递filter = true
会给你更平滑的边缘。
然而,正如EIYeante在评论中指出的那样,你可能仍然会看到不同。 这是他们的示例图像。
filter将设置FILTER_BITMAP_FLAG进行绘制,这将影响位图采样,当它们根据您提供的值进行转换时。