2015-06-14 63 views
0

ImageView已加載了67KB的1514×564 PNG圖像。Android。我如何使ImageView將自己繪製爲PNG?

需要將包含此類ImageView的多個視圖的LinearLayout繪製到畫布中。 調用方法ImageView.draw(Canvas)時,畫布大小以字節爲單位從67KB增加到13MB! (因爲「繪製」繪製位圖,而不是壓縮的PNG)

是否有一種簡單的方法可以讓imageView將自己繪製爲PNG?

到目前爲止,我已經想過擴展ImageView,並在繪製之前用壓縮位圖的東西重寫draw方法。

回答

0

有沒有一種簡單的方法可以讓imageView將自己繪製爲PNG?

不,因爲沒有這樣的概念。而且,你已經有了PNG,所以你不清楚爲什麼你要先調用draw()`。如果你想要一個PNG,使用你的PNG。

到目前爲止,我已經想過擴展ImageView並在繪製之前用壓縮位圖的東西重寫draw方法。

這將是毫無意義的,因爲您在繪製圖像之前需要重新解壓縮圖像。 Canvas繪製了Bitmap,而不是PNG,Bitmap是解壓縮的圖像。

+0

問題是,我在畫布內繪製了一個LinearLayout,並且這種佈局包含許多視圖,包括ImageView。 – vitil

+0

@ user2358649:然後,如果您有幾個1514×564'ImageView'小部件,則需要大量'Canvas'。如果你不希望'Canvas'變大,那麼可以使用更小的'ImageViews'。如果這是一個'Bitmap'支持的'Canvas',則可以將生成的'Bitmap'壓縮到一個PNG,可能作爲寫入磁盤的一部分,但這不會改變'Canvas'本身的大小。 – CommonsWare

相關問題