如何解决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
相关产品推荐
相关产品推荐

