2011-03-22 64 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不會以這種或那種方式產生太大的影響。