我正確地說16位圖像將被解碼並繪製得比24位或32位更快?我知道文件大小會更少,但如果位圖實際繪製速度比轉換它們的速度更快。如果速度更快,我將如何去保存16位jpeg文件?我只在Photoshop中找到一個選項來保存一個16位的位圖...這是54 MB。16位圖像和Android處理
回答
這取決於。如果你的屏幕(以及繪製到它的表面)是16位,它可以更快;如果它們是32位,則32位位圖可能會更快。
但是,如果您在資源方面(這意味着JPEG或PNG圖像),說他們是「16位」或「32位」是沒有意義的。 JPEG是一種顏色表示,通常會擴展爲32位,但您也可以將其解壓縮到16位(並且可能希望在抖動時進行抖動,以使其看起來不錯)。 PNG可以存儲很多表示,具體取決於圖像,並且通常會選擇最好的。此外,在包裝過程中,aapt會遍歷所有PNG圖像,並將其重新壓縮爲儘可能小的最終圖像,因此如果可能的話,甚至可以使用調色板表示。
因此,如何存儲圖像並不重要;重要的是在運行時解壓縮時創建的位圖。這裏有一些一般的規則:
- 如果圖像有alpha,它將需要解壓縮到完整的32位。
- 如果幀緩衝區和曲面是32位,應該將圖像解壓縮到32位。
- 如果圖像沒有alpha,它可能是888(32位)或565(16位)。挑選使用的是...很棘手。
從歷史上看,我們在平臺上使用的設備有16位屏幕,所以我們必須處理它的複雜性。主要問題是平衡內存使用與渲染性能與質量之間的平衡。對於內存使用和渲染性能來說,16位是最好的...但是,對於許多圖像來說,如果圖像沒有抖動,將會出現色帶。
在哪裏做抖動也很棘手:理想情況下,你會做它的一部分,生成原始圖像,但這限制了你可以用它做什麼(沒有縮放,這意味着不使用9補丁)。另一方面,渲染時可以做到這一點,但這意味着您需要將圖像加載爲32位,並在每次將圖像拖入屏幕時抖動。這提供了最大的靈活性,但具有更多的內存和性能影響。
現在在實踐中,這實際上最終成爲平臺的一個罕見問題 - 因爲幾乎所有用作9補丁或其他類似圖像的圖像都具有透明度,因此無論如何都需要將其加載爲32位,因此它渲染時不會太大。
這一切都歸結做的是:
- 如果圖像的透明度,不用擔心,它無論如何都會被載入32位。
- 如果您的圖像沒有透明度,你將需要:
- 決定是否抖動原始圖像。這將在16位屏幕上提供更好的質量(您會比關鍵性能渲染代碼更好地抖動),但不會充分利用32位屏幕。
- 讓平臺決定要做什麼。這將給16位和32位屏幕帶來好的結果,但您不想縮放圖像。
- 自己加載圖像,並明確控制API以決定使用何種格式以及何時(或如果)抖動。
我希望你的意思是16位,RGB 565格式,是的,它應該比24位RGB 888或32位RGB 8888格式更快。您在photoshop中看到的內容可能與RGB 565不同,但是每個組件16位的RGB,使每像素8位RGB增加一倍。
AFAIK JPEG不支持16位格式(每個像素爲565或16位)。
- 1. 24位圖圖像和16位圖圖像中的RGB顏色
- 2. Android圖像處理
- 3. Android圖像處理
- 4. 16位(565)圖像讀取
- 5. Android:處理圖像縮放和質量
- 6. Android圖像處理和模式檢測
- 7. Android DSP和圖像處理加速
- 8. Java和Android之間的圖像處理
- 9. Android:實時圖像處理
- 10. Android圖像處理庫
- 11. Android高級圖像處理
- 12. Android:處理圖像的HashMap.put
- 13. Android上的圖像處理
- 14. Android處理大圖像
- 15. com.google.zxing.binarybitmap錯誤與處理位圖圖像
- 16. Winforms的RGB圖像灰度8位和16位
- 17. 將RGB圖像轉換爲RGB 16位和8位
- 18. 笨和GD圖像處理
- 19. R和圖像處理
- 20. 如何將24位圖像轉換爲16位rgb565位圖?
- 21. 從Android處理草圖保存圖像
- 22. imwrite 16位png深度圖像
- 23. Image.frombuffer具有16位的圖像數據
- 24. opencv realsense 16位深度圖像
- 25. Android定位處理?
- 26. 圖像處理術語:位深度
- 27. 16個圖像
- 28. 16×16像素的圖像被拉伸
- 29. OpenGL中的Android位圖處理
- 30. 圖像處理
很好的答案,謝謝。 – jfisk 2010-08-22 06:05:43