【问题标题】:Cannot get bitmap size of a webP image that has transparency?无法获取具有透明度的 webP 图像的位图大小?
【发布时间】:2012-08-20 16:41:26
【问题描述】:

我正在使用相对较新的 webP 图像格式进行一些实验,该格式在 android 4 (ICS) 上受支持,如 here 所示。

到目前为止,为了在加载之前获取图像大小,我使用了下一个代码(类似于 google 显示的 here):

final BitmapFactory.Options options=new BitmapFactory.Options();
options.inJustDecodeBounds=true;
BitmapFactory.decodeStream(inputStream,null,options);
//image size is in options.outWidth,options.outHeight 

但是,当我在具有透明度的 webP 图像上使用它时,它似乎根本无法获取此信息(宽度和高度均返回 -1)。

谷歌在解码此图像文件类型时是否可能存在错误?

有没有办法克服这个问题?

为了对其进行测试,只需将具有透明度的 png 文件(例如我使用过的 this 文件,并通过 paint.net app 添加一些透明像素)转换为 webP 格式(使用 google's tool ),并尝试像我使用的代码一样读取文件的分辨率。

【问题讨论】:

    标签: android bitmap android-4.0-ice-cream-sandwich webp image-size


    【解决方案1】:

    我也遇到了这个问题。

    可悲的是,根据bug report,仅在 Android JB-MR2 (4.2) 中添加了对具有透明度的 WEBP 的支持。

    所以在 android 4.0 到 4.2 WEBP 仅在没有 alpha 通道时才有效。

    【讨论】:

    • 你知道可以对 webP 文件进行解码和编码的库吗?这将是伟大的,并消除了对 android 版本兼容性的需要。
    • 据我所知,只有本地路线。在this answer 中解释。但我认为你不能使用像 inJustDecodeBounds 这样的位图选项。就我个人而言,我只是为 android 4.2+ 提供 webp,无论如何这将是一个不断增长的目标。但是对此的支持库会很棒。
    • 看起来工作量很大,这只是为了简单的解码,在你得到整个字节数组之后。它也可能效率不高,因为您需要在解码之前加载整个字节数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 2018-04-02
    • 1970-01-01
    • 2013-08-17
    • 2016-07-08
    • 2016-07-25
    相关资源
    最近更新 更多