2013-02-16 51 views
1

首先,我知道使用inJustDecodeBoundsinSample大小的加載位圖大小接近所需大小的推薦方法。然而,這是一個相當寬泛的方法,只能獲得接近目標的圖像。縮放大位圖替代方法

我儘管已經利用options.inDensityoptions.inTargetDensity誘騙本地加載程序將圖像更精確地縮放到所需的目標大小。基本上,我將options.inDensity設置爲圖像的實際寬度,並將options.inTargetDensity設置爲所需的寬度,並且確實獲得了所需尺寸的圖像(在此情況下縱橫比恰好保持相同)。然後在結果圖像上設置image.setDensity(DENSITY_NONE),並且全部顯示工作正常。

任何人都知道這種方法有什麼問題嗎?有關內存效率和圖像質量的任何想法?

+0

聽起來很棒! (不能相信android devs編寫代碼,但沒有以合理和明智的方式公開功能)。 – 2013-02-16 19:42:45

+0

聽起來很酷!你可以請一個樣品嗎? – 2013-02-16 19:52:06

+0

我認爲雖然使用inSample更多的性能優化,不是嗎?因爲CPU/GPU更容易以這種方式處理採樣,不是嗎? – 2013-02-16 20:01:07

回答

0

我一直使用Opengl 2.0和表面視圖獲得更好的圖像管理。

0

聽起來很棒! (不能相信android devs編寫代碼,但沒有以合理和明智的方式公開功能)。

我確實有一個問題。我有充分的理由相信Android無法處理任何維度中大於2048x2048像素的實例化位圖。如果執行重新縮放的內部代碼不夠智能,則加載大於2048x2048的位圖時可能會失敗。

+0

我想可以將InSampleSize與這種方法結合起來。未經測試,但如果您可以在InSampleSize效果之後計算圖像的最終尺寸,並在options.inDensity中使用它,則可能會有效。 – user1016143 2013-02-17 11:20:15

0

我正在考慮這個我的自我,使用inDensity和inTargetDensity在解碼上放大/縮小位圖。它運行良好,但不幸的是它會產生非常差的性能(動畫)結果。我希望我可以使用這個作爲「普遍」的解決方案來擴大/縮小解碼,類似於inSampleSize,不幸的是只用於下采樣。似乎有不同的本地實現:inSampleSize性能良好,沒有明顯的性能影響,inDensity/inTargetDensity引入了明顯的性能影響(如慢動作)。

或者我錯過了什麼?

+0

我建議如果內存允許的話,建議在內存中預先縮放圖像以獲得高效動畫。 – user1016143 2013-02-18 17:07:52