Bitmap.CompressFormat.WEBP在Android API 19阿尔法信道变为黑(

2019-09-30 10:18发布

我写道,从检索网站(JPEG,PNG,...),这是我的话,保存到磁盘WEBP格式的图像服务。

我使用下面的代码保存图像:

try (FileOutputStream fos = new FileOutputStream(imgFile)) {
    bitmap.compress(Bitmap.CompressFormat.WEBP, 100, fos);
} catch (IOException e) {
    Log.e(TAG, "IOException writing file");
} catch (SecurityException e) {
    Log.e(TAG, "SecurityException writing file");
}

我没有得到任何警告。

如果应用程序在设备运行与API 22或23解码的图像文件被示出具有alpha通道存在时。

如果我运行在API19模拟器应用程序的解码图像不与alpha通道(它示出黑色)中所示。

我优选WEBP因为比PNG更轻,它应具有alpha通道。

PS:我与质量80和100尝试过

注释1

所检索的图像是具有alpha通道PNG。

中的其他设备(和仿真器太)与API相同的图像> 22 WEBP转换时,它显示了透明度。

我与其他巴新尝试过。 如果我使用检索到的位图,我把它保存为PNG在它被显示为透明正确的所有设备,在API 19了。

当我将它保存在WEBP格式的问题只验证。 我试图把从仿真器API 19的WEBP编码文件,它有不alpha通道了。

我找回这样的位图:

        try (InputStream is = new URL(mImageUrl).openStream()) {
            bitmap = BitmapFactory.decodeStream(is);
        } catch (MalformedURLException e) {
            Log.e(TAG, "MalformedURLException " + e.getMessage());
        } catch (IOException e) {
            Log.e(TAG, "IOException decoding url " + e.getMessage());
        }

评论2

如果我试图用一个透明度从我的电脑替换在模拟器中WEBP文件,然后...该应用程序会显示与透明度的图像。

因此,它是的文件是如何保存的问题!

文章来源: Bitmap.CompressFormat.WEBP on Android API 19 alpha channel becomes black