2011-01-10 180 views
5

我目前正在開發我的第一個Android應用程序,並且在渲染圖像時出現了一些問題。圖像本身質量很好,但是渲染質量會大大降低。邊緣變得鋸齒狀,看起來效果很差。到目前爲止,我所展示的每個人都幾乎立即注意到它,沒有任何提示。 [左,月底開始在右邊:]在Android上呈現的圖像上的鋸齒狀邊緣

http://i.stack.imgur.com/gld5A.png

我想一切我所知道的和每一個提示,我已經能夠通過四處尋找網上找到,但似乎沒有任何解決它。

目前,我得到的圖像作爲位圖,它的規模:

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示例的性質類似。

再次感謝!

回答

0

如果不限制少得多的顏色比原來的畫面有(確實有Android的256種色模式?),我建議禁用dithering,如果放大到你的圖片,它也有明顯的效果也許會破壞光滑的外觀。

我覺得你的情況,通過破壞該抗鋸齒需求平穩一臉其他顏色抖動抗鋸齒推斷。對照片進行快速顏色計數(左側約850張,右側約140張)證實了這一點。

+0

我已經嘗試過了,它並沒有真正的區別。我承認它存在的唯一原因是因爲另一個stackoverflow.com線程中的某個人提出了這個問題:P我欣賞這個想法!真的有什麼想法是有幫助的。 – 2011-01-10 19:20:18

+0

好的,我認爲佩德羅的答案在這種情況下更有幫助。我還沒有對Android做任何事情,所以我不知道有抖動/帶狀問題,只是給出了與圖形相關的答案。 – schnaader 2011-01-10 19:24:04

1

這可能與將圖像從一種格式轉換爲另一種格式有關。此外,android屏幕因設備而異。嘗試使用其他設備,它可能會更好看...幾乎肯定它會有不同的音調。

嘗試讀取這個問題(和條帶和抖動)這篇大文章,並考慮調整你創建的圖像爲它在Android設備更好的工作:http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/

相關問題