我的Android应用程序加载图像,进行一些处理并将处理后的图像保存在SD卡上。我将临时文件保存到SD卡而不是使用缓冲区。例如,读取背景,滚动图像,绘制注释,在保存的临时文件中合并背景和注释以用作下一个背景,等等。典型代码:
bitmap = Bitmap.createBitmap(imageSizeX,imageSizeY,Bitmap.Config.ARGB_8888);
bitmap = BitmapFactory.decodeFile(path,options);
bitmap.compress(Bitmap.CompressFormat.JPEG,100,output);
一切正常但在某些情况下保存的图像会添加类似于此帖中描述的噪点: Bitmap resizing and rotating: linear noise
引用帖子的作者通过二次取样解决了这个问题,但我不希望这样做。
我尝试过这里建议的解决方案: http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/#more-1218 如果我理解正确应该通过设置: 。getWindow()setFormat(PixelFormat.TRANSLUCENT); 迫使32位。
没有太大变化。设置或不设置抖动标志似乎也没有太大变化。还有其他想法吗?
答案 0 :(得分:0)
回答我自己的问题: 通过压缩到.png而不是.jpg
,噪音消失,或者至少结果更好bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);
在.jpg中看起来像地毯纹理的天空在.png中看起来光滑干净。由于差异比压缩到.png和.jpg的相同图像之间的通常差异要明显得多,我想这取决于Android实现。明确地设置TRANSLUCENT和DITHER并没有太大的不同。