createScaledBitmap的filter参数有什么作用?

cla*_*hey 209 scaling android

宣言android.graphics.Bitmap.createScaledBitmap

public static Bitmap createScaledBitmap
  (Bitmap src, int dstWidth, int dstHeight, boolean filter)
Run Code Online (Sandbox Code Playgroud)

但是,文档没有解释任何参数.所有这些都非常明显,除了boolean filter.有谁知道它的作用?

tee*_*yay 251

为了扩大Karan的答案:作为一般规则,你将不会看到任何区别,如果你缩放图像下来,但是你会如果你缩放来.

传递filter = false将导致块状像素化图像.

通过filter = true将为您提供更平滑的边缘.

但是,正如EIYeante在评论中指出的那样,你可能仍然会看到不同之处.这是他们的示例图像.

  • @teedyay查看此示例:https://dl.dropboxusercontent.com/u/18446310/filter_parameter_example.png原始图像的分辨率为1232x2048.我正在使用这段代码进行大量的重写:`bm = MediaStore.Images.Media.getBitmap(this.getContentResolver(),intent.getData()); resizedBitmap = Bitmap.createScaledBitmap(bm,150,150,true); resizedBitmap.compress(Bitmap.CompressFormat.JPEG,95,out);`我只是更改过滤器参数. (8认同)
  • @Mirko - 不,没关系:这应该可以让我获得民粹主义徽章.:) (6认同)
  • 这个标志具有误导性。我们如何在重新采样之前通过平滑进行下采样以防止抗锯齿? (2认同)

bee*_*per 86

快速浏览SKIA源代码表明(至少在默认情况下)FILTER标志使其进行简单的双线性插值.检查维基百科或您最喜欢的图形参考,看看预期的后果是什么.传统上,您希望在放大图像时进行双线性或双三次插值,并在缩小图像时进行面积平均.我得到的印象是(虽然我很高兴能够得到纠正)Android/Skia在缩小尺寸时进行简单的子采样而不进行过滤,因此即使缩小尺寸,您也可能从过滤中获得更好的结果.(还有另一种方法可以通过插值实现高质量的缩小,包括进行一系列50%的缩减.请参阅http://today.java.net/pub/a/today/2007/04/03/perils-of-图像getscaledinstance.html 详情.)

  • 如果你传递它,它会怎么做?最近的邻居? (5认同)