1

我的 Android 应用程序加载图像,进行一些处理并将处理后的图像保存在 SD 卡上。我将临时文件保存到 SD 卡而不是使用缓冲区。例如,读取背景、滚动图像、绘制注释、在保存的临时文件中合并背景和注释以用作下一个背景,等等。典型片段:

位图 = Bitmap.createBitmap(imageSizeX, imageSizeY, Bitmap.Config.ARGB_8888);

位图 = BitmapFactory.decodeFile(路径,选项);

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, 输出);

一切正常,但在某些情况下,保存的图像添加了类似于本文所述的噪声: 位图调整大小和旋转:线性噪声

引用的帖子的作者通过二次抽样解决了这个问题,但我不希望这样做。

我已经尝试过这里建议的解决方案: http ://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/#more-1218 如果我理解正确应该通过设置来实现: getWindow().setFormat(PixelFormat.TRANSLUCENT); 强制32位。

变化不大。设置或不设置抖动标志似乎也没有太大变化。还有其他想法吗?

4

1 回答 1

0

回答我自己的问题:通过压缩为 .png 而不是 .jpg,噪音消失了,或者至少结果更好

bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);

在 .jpg 中看起来像地毯纹理的同一片天空在 .png 中看起来平滑而干净。由于这种差异比压缩为 .png 和 .jpg 的同一图像之间的通常差异要明显得多,我想这取决于 Android 实现。显式设置 TRANSLUCENT 和 DITHER 并没有太大的不同。

于 2011-03-23T19:07:53.280 回答