【问题标题】:Android. How can I make an ImageView draw itself as a PNG?安卓。如何使 ImageView 将自身绘制为 PNG?
【发布时间】:2015-06-14 12:30:51
【问题描述】:

ImageView 已加载 1514 × 564 PNG 图像,大小为 67KB。

需要将包含多个视图(包括 ImageView)的 LinearLayout 绘制到画布中。 调用 ImageView.draw(Canvas) 方法时,画布大小(以字节为单位)从 67KB 增加到 13MB! (因为“draw”绘制的是位图,而不是压缩的 PNG)

有没有一种简单的方法可以让 imageView 将自身绘制为 PNG?

到目前为止,我一直在考虑扩展 ImageView 并使用在绘制之前压缩位图的东西覆盖 draw 方法。

【问题讨论】:

    标签: android canvas bitmap imageview resolution


    【解决方案1】:

    有没有一种简单的方法可以让 imageView 将自身绘制为 PNG?

    不,因为没有这样的概念。此外,你已经有了 PNG,所以不清楚你为什么首先调用 draw()`。如果您想要 PNG,请使用您的 PNG。

    到目前为止,我一直在考虑扩展 ImageView 并使用在绘制之前压缩位图的东西覆盖 draw 方法。

    那将毫无意义,因为您需要在绘制之前重新解压缩图像。 Canvas 绘制的是Bitmap,而不是PNG,Bitmap 是解压后的图像。

    【讨论】:

    • 重点是我在画布内绘制了一个LinearLayout,这样的布局包含了很多视图,包括ImageViews。
    • @user2358649:那么,如果您有多个 1514 × 564 ImageView 小部件,您将需要大量的 Canvas。如果您不希望Canvas 变得那么大,请使用较小的ImageViews。如果这是 Bitmap-backed Canvas,您可以将生成的 Bitmap 压缩为 PNG,也许作为写入磁盘的一部分,但这不会改变 Canvas 本身的大小。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多