Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android渲染图像上的锯齿状边缘_Java_Android_Bitmap_Image Scaling_Android Image - Fatal编程技术网

Java Android渲染图像上的锯齿状边缘

Java Android渲染图像上的锯齿状边缘,java,android,bitmap,image-scaling,android-image,Java,Android,Bitmap,Image Scaling,Android Image,我目前正在开发我的第一个Android应用程序,在渲染图像时遇到了一些问题。图像本身的质量从一开始就很好,但渲染后质量会大大降低。边缘变得参差不齐,只是看起来做得很差。到目前为止,我展示给大家看的每个人几乎都立即注意到了这一点,没有任何提示。[从左开始,从右结束:] 我正在尝试我所知道的每一件事,以及我在网上所能找到的每一个技巧,但似乎没有什么能解决它 目前,我以位图的形式获取图像并对其进行缩放: Bitmap holeImage = BitmapFactory.decodeResource(

我目前正在开发我的第一个Android应用程序,在渲染图像时遇到了一些问题。图像本身的质量从一开始就很好,但渲染后质量会大大降低。边缘变得参差不齐,只是看起来做得很差。到目前为止,我展示给大家看的每个人几乎都立即注意到了这一点,没有任何提示。[从左开始,从右结束:]

我正在尝试我所知道的每一件事,以及我在网上所能找到的每一个技巧,但似乎没有什么能解决它

目前,我以位图的形式获取图像并对其进行缩放:

Bitmap holeImage = BitmapFactory.decodeResource(res, R.drawable.hole_image);
Bitmap holeImageBMP = Bitmap.createScaledBitmap(holeImage, width, height, true);
获得图像后,我创建了一个绘画,将一些平滑属性设置为true,然后在画布上绘制:

Paint smoothingPaint = new Paint();
smoothingPaint.setAntiAlias(true);
smoothingPaint.setFilterBitmap(true);
smoothingPaint.setDither(true);
canvas.drawBitmap(holeImageBMP, 0, 0, smoothingPaint);
然而,正如您在上面明显看到的,图像质量急剧下降。我已经看到很多图像被渲染得很漂亮,老实说,我只是不确定发生了什么,所以任何建议都是很好的

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


再次感谢

如果你没有被限制使用比原始图片少得多的颜色(Android有256色模式吗?),我建议你禁用,如果你放大图片,它确实有一种可能破坏平滑外观的可见效果


我认为在您的例子中,抖动通过破坏消除混叠所需的其他颜色来推断消除混叠效果,以获得平滑外观。对图片进行快速颜色计数(左一个大约850,右一个大约140)可以证实这一点。

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


试着阅读这篇关于这个问题的伟大文章(并附带和抖动),并考虑修改你创建的图像,使之更好地在Android设备中工作:

谢谢你的建议!我已经在几种不同的设备上试用过它(主要是难以置信的Droid X,尽管上面的图片是从模拟器上拍摄的),它在所有方面都非常一致。我想知道是否将文件保存为位图而不是PNG?我会读那篇文章,看起来很有希望。谢谢我已经试过了,但没有真正的区别。我承认它存在的唯一原因是因为另一个stackoverflow.com的帖子中有人建议:P尽管如此,我还是很欣赏这个想法!好吧,我认为佩德罗的回答在这种情况下更有用。我还没有用安卓做过任何事情,所以我不知道存在抖动/带状问题,只是给出了一个与图形相关的答案。这很公平。那么再次谢谢你!:D