You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决SQLite中BLOB存储的PNG图片解码后透明区域变黑问题

解决BitmapFactory解码透明PNG时背景变黑的问题

这个问题我之前也碰到过!默认情况下,BitmapFactory.decodeByteArray()会使用不支持Alpha通道的配置解码图片,导致透明区域被填充成黑色。要保留透明背景,关键是明确指定支持Alpha通道的Bitmap配置。

直接修改你的解码代码即可,具体步骤如下:

  • 创建BitmapFactory.Options对象,将inPreferredConfig设置为Bitmap.Config.ARGB_8888——这个配置每个像素用4个字节存储,包含红、绿、蓝和Alpha(透明度)四个通道,完全支持透明效果。
  • 将配置好的Options对象传入解码方法中。

修改后的代码如下:

val options = BitmapFactory.Options().apply {
    inPreferredConfig = Bitmap.Config.ARGB_8888
}
val bitmap = BitmapFactory.decodeByteArray(imageByte, 0, imageByte.size, options)

如果处理后还是有问题,可以检查下SQLite中存储的BLOB数据是否完整——比如有没有在存储过程中丢失Alpha通道信息。不过根据你描述的“原本是带透明背景的白色图标”,这个配置应该就能解决问题了。

内容的提问来源于stack exchange,提问作者Burak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:29:36