2015-06-14 55 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

相关问题