9
我剛剛encontered一個棘手的問題......保存大型圖像PNG
這裏是我的故事:
我的設備三星Galaxy Note,通常情況下,它需要在圖片的3264分辨率* 2448像素。我喜歡精美的圖片,以便找到詳細的信息,但在這裏我討厭它,因爲它在Android中處理非常巨大。我可以讀取並顯示這個大分辨率的圖像,我需要在它上面畫線,然後我需要將圖像和線條保存爲png。 我頭疼的是,我的Android總是給我出例外memery的,當我想創建一個可變的位圖是這樣的:
Bitmap bmp = Bitmap.createBitmap(3264, 2448, Config.RGB_565);
Canvas cv = new Canvas(bmp);
//draw a line and save and restore canvas
// I found an alternative solution yet proven to be uncorrect:
myImageView.setDrawingCacheEnabled(true);
myImageView.buildDrawingCache(true);
Bitmap bmp = myImageView.getDrawingCache();
//save bmp to png
當
bmp.width * bmp.height * 4 > getScaledMaximumDrawingCacheSize()
異常跳出。我已經測試了myImageView.measure(...)
和myImageView.layout(...)
,沒有爲我工作。 (事情很好,當我用較小的圖像測試相同的代碼時)
任何專家知道如何殺死這個問題或向我提出解決方案?謝謝!
你有沒有計算認爲,規模和質量的位圖所需的內存。無論您正在開發的平臺如何,它都很大,但是如果您不小心管理位圖對象,則在受限的內存設備上發現更麻煩。 – paulkayuk
你可能想看看http://stackoverflow.com/questions/10993568/android-image-file-size-limit-and-how-to-handle-large-images – erbsman
你可能想嘗試第一塊將大的位圖分成幾塊,然後仔細地繪製並對齊它們上的線條。然後,您需要將小部分放回完整的大位圖。 – dumbfingers