在Android中呈现的图像上的锯齿状边缘

Phi*_*che 5 java android bitmap android-image image-scaling

我目前正在开发我的第一个Android应用程序,并且在渲染图像时遇到了一些问题.图像本身的质量很高,但在渲染时质量会大幅降低.边缘变得锯齿状,看起来很糟糕.到目前为止,我所展示的每个人几乎都立即注意到它,没有任何提示.[从左侧开始,在右侧结束:]

http://i.stack.imgur.com/gld5A.png

我正在尝试我所知道的一切以及我通过在线浏览找到的每一个提示,但似乎没有什么能解决它.

目前,我将图像作为位图并进行缩放:

Bitmap holeImage = BitmapFactory.decodeResource(res, R.drawable.hole_image);
Bitmap holeImageBMP = Bitmap.createScaledBitmap(holeImage, width, height, true);
Run Code Online (Sandbox Code Playgroud)

一旦我有了图像,我创建一个Paint,将一些平滑属性设置为true,然后在画布上绘制它:

Paint smoothingPaint = new Paint();
smoothingPaint.setAntiAlias(true);
smoothingPaint.setFilterBitmap(true);
smoothingPaint.setDither(true);
canvas.drawBitmap(holeImageBMP, 0, 0, smoothingPaint);
Run Code Online (Sandbox Code Playgroud)

然而,正如您可以在上面看到的那样,图像质量急剧下降.我已经看到很多图像呈现得很漂亮,老实说我不确定发生了什么,所以任何建议都会很棒!

其他说明:我使用SurfaceView方法处理绘图,本质上类似于SDK中给出的LunarLander示例.

再次感谢!

sch*_*der 0

如果你不限制比原始图片少得多的颜色(Android 有 256 种颜色模式吗?),我建议禁用抖动,如果你放大图片,它确实会产生明显的效果,可能会破坏光滑的外观。

我认为在你的情况下,抖动通过破坏抗锯齿平滑外观所需的附加颜色来推断抗锯齿。对您的照片进行快速颜色计数(左一张大约 850,右一张大约 140)证实了这一点。