6

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

示例图像

我正在尝试我所知道的所有内容以及通过在线查看可以找到的所有提示,但似乎没有任何解决方法。

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

Bitmap holeImage = BitmapFactory.decodeResource(res, R.drawable.hole_image);
Bitmap holeImageBMP = Bitmap.createScaledBitmap(holeImage, width, height, true);

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

Paint smoothingPaint = new Paint();
smoothingPaint.setAntiAlias(true);
smoothingPaint.setFilterBitmap(true);
smoothingPaint.setDither(true);
canvas.drawBitmap(holeImageBMP, 0, 0, smoothingPaint);

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

其他注意事项:我使用 SurfaceView 方法来处理绘图,本质上类似于 SDK 中给出的 LunarLander 示例。

再次感谢!

4

2 回答 2

0

如果您不限于比原始图片少得多的颜色(Android 有 256 种颜色模式吗?),我建议禁用dithering,如果您放大图片,它确实具有可能会破坏的可见效果光滑的外观。

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

于 2011-01-10T10:55:47.597 回答
0

这可能与将图像从一种格式转换为另一种格式有关。此外,Android 屏幕因设备而异。尝试使用其他设备,它可能看起来更好......几乎可以肯定它会有不同的音调。

尝试阅读这篇关于此问题(以及条带和抖动)的精彩文章,并考虑调整您为其创建的图像以在 android 设备中更好地工作:http ://www.curious-creature.org/2010/12/08/bitmap -质量带和抖动/

于 2011-01-10T11:03:24.217 回答