2011-03-22 63 views
1

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

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

在回答我自己的问题: 噪音消失,或者至少结果是更好的方式,通过压缩来代替png格式,以.jpg

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

它看起来像一个地毯质地的同一片天空在.jpg中看起来光滑干净。由于差异比通常压缩到.png和.jpg的图像之间的差异更明显,我想这取决于Android的实现。显式设置TRANSLUCENT和DITHER不会以这种或那种方式产生太大的影响。