Android createScaledBitmap的过滤器参数做什么?

Android createScaledBitmap的过滤器参数做什么?,android,scaling,Android,Scaling,android.graphics.Bitmap.createScaledBitmap的声明是 public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter) 但是,文档没有解释任何参数。除了布尔过滤器之外,它们都非常明显。有人知道它是做什么的吗?过滤器将为绘制设置一个参数,当位图根据您提供的值进行变换时,该参数会影响位图的采样。进一步扩展Karan的回答:一般

android.graphics.Bitmap.createScaledBitmap
的声明是

public static Bitmap createScaledBitmap
  (Bitmap src, int dstWidth, int dstHeight, boolean filter)

但是,文档没有解释任何参数。除了
布尔过滤器
之外,它们都非常明显。有人知道它是做什么的吗?

过滤器将为绘制设置一个参数,当位图根据您提供的值进行变换时,该参数会影响位图的采样。

进一步扩展Karan的回答:一般来说,如果您缩小图像,您不会看到任何差异,但是如果您放大图像,您会看到任何差异

传递
filter=false
将产生块状像素化图像

传递
filter=true
将使边缘更平滑


然而,正如EIYeante在评论中指出的那样,你可能仍然会看到不同

快速浏览SKIA源代码表明(至少在默认情况下)过滤器标志会使其执行简单的双线性插值。查看Wikipedia或您最喜欢的图形参考,看看预期的结果是什么。传统上,在放大图像时需要进行双线性或双三次插值,而在缩小图像时需要进行面积平均。我得到的印象是(尽管我很高兴被纠正)Android/Skia在缩减规模而不进行过滤时会进行简单的子采样,因此即使在缩减规模时,您也可能从过滤中获得更好的结果。(有一种通过插值实现高质量缩编的替代方法,包括进行一系列50%的缩编。有关详细信息,请参阅。)

晚会晚了一点,但我认为一些示例图像可能会澄清这个问题

还有一个更普遍的问题是,是否以及如何进行过滤

杰夫·阿特伍德说:

一般来说,在将较大的图像制作成较小的图像时,需要轻微的锐化效果,而将较小的图像制作成较大的图像时,需要轻微的模糊效果


Android的API没有指定将应用哪种过滤器,所以我想问题是:您希望像素保持原样(就像您在8位艺术中希望的那样),还是可以应用转换使图像更令人满意(就像您在照片中希望的那样).

当我在android和python上使用相同的tensorflow lite模型时,我在研究filter=false时使用的算法时(我需要100%确定产生了什么输出),发现它在filter=false时使用了最近的(在android 7.1上测试)。我比较了使用PIL resample=Image时android和python上相同的嵌入。最近的

它对位图采样有什么影响?我对位图采样了解不多,您可以查看下面的wiki页面了解详细信息。“影响位图的采样”到底是什么?威利安·丹尼斯:看看上面的评论。我不知道细节,我还没有试过。如果你传错了怎么办?最近邻?另外,如果你通过filter=true,你知道它是否在进行面积平均吗?你应该添加一个图像来了解差异是什么,而不是引用外部源。链接消失,源消失。哈哈,10多年后@clahey:
如果这是错误的,则使用最近邻缩放,图像质量更差,但速度更快
在javadoc中,用于
createScaledBitmap
@Mirko-nah,没关系:这随时都可以为我赢得民粹主义徽章。:)@你有没有举个例子?一些输入和输出图像将是伟大的。谢谢,哇。我被纠正了。我很好奇为什么这在你的照片中如此明显,但我没有在我的照片中看到。也许是因为你的规模缩小了这么多?这个标志是误导性的。我们如何在重新采样之前通过平滑降低采样以防止抗锯齿?链接已断开@teedyay