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

2024-06-24

我编写了一个从 Web 检索图像(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 文件替换为计算机中的透明文件,那么...应用程序将显示透明图像。

所以,这是文件如何保存的问题!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android API 19 上的 Bitmap.CompressFormat.WEBP alpha 通道变黑 的相关文章

随机推荐

  • C++ - 复制赋值运算符被隐式删除

    我尝试在以下情况下使用复制分配 有两个模板类 list map and xpair template
  • R 中 Tomek 链接的快速计算

    我想实现 tomek 的链接来处理不平衡数据 此代码用于二分类问题 其中 1 类是多数类 0 类是少数类 X 为输入 Y 为输出 我已经编写了以下代码 但我正在寻找一种加快计算速度的方法 我该如何改进我的代码 remove overlapp
  • 是否可以检测浏览器何时使用后备字体而不是 CSS 中指定的主要字体?

    如果在文本字段中输入字符并且当前应用的字体不支持该字符 则为该字符使用备份字体 是否可以通过 Javascript 或其他方式判断这种情况何时发生 尝试创建一个脚本 如果字体不支持某个字符 则会警告用户 感谢您的帮助 这听起来像是一份类似的
  • ggplot.data.frame 中的错误:应使用 aes 或 aes_string 创建映射

    我在从 a 中提取路径时遇到问题ggplot并且遇到错误 下面给出的图像解释了我正在寻找的结果 在图像编辑器中完成以解释目的 假设图 1 是我的原始图 我正在寻找的是将第一个点作为 F 点 并从该点出发 24 小时行驶 Des gt mut
  • 重构:从自定义数据访问层切换到实体框架

    我是一名 NET 开发人员 作为重构项目的一部分 我有几个问题 我们的软件当前使用 Active Record 模式 数据对象和业务对象之间的一对一映射 不好的是业务对象继承自数据对象 导致层之间的高度耦合 我们的目标是从自定义数据访问层
  • 有一个更好的方法吗? VBA脚本

    我这里有一份供料泵的跟踪清单 我们必须考虑库存水平 所以我做了这个 当您将泵输入表中时 什么也没有发生 当您将患者姓名放在上面时 该行会变成粉红色 表明该泵已离开我们的库存 我试图将一个脚本 宏放在一起 可以计算我们仍然拥有的泵 即白色行
  • SlickGrid - 默认情况下控件可见的可编辑网格

    SlickGrid 支持单元格编辑器 可以将其配置为单击或双击时显示 但是 我没有看到编辑器默认对所有单元格可见的选项 而无需单击 双击单元格 是否可以在编辑器所在的光滑网格中支持编辑器 所有单元默认为 init 有已知的解决方法吗 谢谢
  • 如何从 kivy 小部件画布中删除特定指令?

    我正在编写一个基于 kivy 的图形应用程序 我可以在其中动态地将节点添加到绘图区域 然后用有向线 边缘 连接它们 节点可以在绘图区域内拖动 并且边缘应始终与它们保持连接 Edge 类派生自 Widget 类 它的图形表示由两部分组成 线本
  • 2个选择器,2个不同的事件,相同的功能

    我正在使用 jQuery 1 7 需要将相同的函数绑定到 2 个不同选择器上的 2 个不同实时事件 例如 function do something this do something with this alert test input
  • 字体在 Android Studio 预览中更改,但在模拟器/设备中未更改

    我正在尝试更改文本视图 复选框 按钮和 android support design widget TextInputLayout 的默认字体 为了清楚地说明 我设置了 android fontFamily gt cursive 它似乎在
  • 有没有办法保护 python 中的内置函数?

    我的问题源于这个问题 https stackoverflow com questions 6828722 python set to list 其中用户因不知不觉地重新绑定内置全局而感到困惑set 当您尝试覆盖内置函数时 有没有一种简单的方
  • 回发后 JavaScript 不工作 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在 asp net Web 应用程序上使用引导组件 它工作正常 但奇怪的是 它们在页面回发后停止工作 外表很好 但行为却不好 这就
  • 检查语言模型的困惑度

    我使用 Keras LSTM 创建了一个语言模型 现在我想评估它是否良好 因此我想计算困惑度 在 Python 中计算模型的困惑度的最佳方法是什么 我已经提出了两个版本并附上了相应的来源 请随时查看链接 def perplexity raw
  • 在 Express Route api 中添加命名参数

    我有一条快速路线 如下所示 app get api v1 username option function req res do stuff 如何修改此路由 以便 URL 显示选项的参数名称 option 例如 http localhost
  • James Gosling 对 Java 字节为何有符号的解释

    最初我对 Java 决定指定这一点感到惊讶byte是有符号的 范围是 128 127 包括的 我的印象是大多数 8 位数字表示形式都是无符号的 范围为0 255相反 例如IPv4 点十进制表示法 http en wikipedia org
  • Lamport 的 Paxos 中的矛盾做了简单的论文

    阶段 2 a 如果提议者收到大多数接受者对其准备请求 编号为 n 的响应 则它向每个接受者发送一个接受请求 以获取编号为 n 且值为 v 的提案 其中 v 是响应中编号最高的提案的值 或者如果响应未报告任何提案 则为任意值 正如论文中提到的
  • 重载方法值与替代方法的聚合

    我有以下函数 但无法编译 private def save pea KStream String String Unit pea groupByKey aggregate gt folder String String value Stri
  • 多行TextView的wrap_content宽度

    我有一个 TextView 宽度和高度都设置为 wrap content max lines 设置为 2 当文本适合一行时 一切都可以完美运行 但是当它换行到第二行时 TextView 的宽度变得尽可能大 它填充父容器 所以 我想要的是 S
  • 如何用 cin 分配 char 指针?

    所以基本上当我尝试这样做时 char inputFileName cout lt lt Filename cin gt gt inputFileName 它允许我输入文件名 但是当我按 Enter 时 我收到未处理的异常错误 有任何想法吗
  • Android API 19 上的 Bitmap.CompressFormat.WEBP alpha 通道变黑

    我编写了一个从 Web 检索图像 JPEG PNG 等 的服务 然后将其以 webp 格式保存到磁盘 我使用以下代码保存图像 try FileOutputStream fos new FileOutputStream imgFile bit