Android API 19 alpha通道上的Bitmap.CompressFormat.WEBP变为黑色

时间:2016-09-10 17:34:21

标签: android bitmap webp

我写了一个从网上检索图像的服务(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一起尝试过。如果我使用检索到的位图并将其保存在所有设备的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文件替换为具有透明度的WEBP文件,那么......应用程序将以透明的方式显示图像。

所以,这是文件保存方式的问题!

0 个答案:

没有答案