2013-12-08 51 views
1

我想創建一個Canvas實例,它是太大,通過一個堆內存Bitmap進行備份,讓說5000x5000像素(約95MB)。我想這非常大的Canvas所有的各種抽獎操作直接發送到一個位圖文件。不幸的是,Bitmap類的Android標final所以我不能提供我自己的實現。有沒有人有一個想法是否以及如何實現?我不是在表演很感興趣,10秒寫做幾十繪製操作是好的,我們的目標是出不去了內存不足的錯誤。是否有可能建立在Android的支持畫布文件?

回答

0

沒有任何方法可以提供您所要求的功能,即使存在,對文件執行此類操作也會帶來可怕的性能。

可能唯一合理的方法是隻存儲繪圖操作,並創建一個與設備屏幕大小相同的Canvas,該設備屏幕可用作5000x5000像素畫布中的「窗口」。有關詳細解釋見我的回答一個相關的問題在這裏:Android - is there a possibility to make infinite canvas?

0

這裏有一個想法,我有我認爲理論上可以工作,但大概會需要太多的努力:

創建的Canvas一個子類,它包含裏面有很多小的Canvas對象。這些將代表整體Canvas的瓷磚。這些瓷磚應該足夠小,以便一次至少放入一個內存中。針對每個內部瓦片Canvas創建一個文件,並使用它來從Buffer存儲未壓縮的像素數據。

當在整體Canvas上發生繪製操作時,找出需要繪製哪些圖塊。每次一個將該文件的文件讀入內存中的Bitmap,並執行可能的剪切繪製,然後將Bitmap數據保存回該文件並關閉它。

從理論上講,聽起來可能,實際上聽起來像是太多的工作。

相關問題