Mik*_*ike 13 android gif transparent imageview android-4.4-kitkat
我试图在我的应用程序中显示透明的GIF图像,但没有成功.我可以在ImageView中下载并显示图标,但是使用白色背景而不是透明.
我已经尝试过这些没有成功的解决方案: 以编程方式将GIF转换为PNG
有没有人想出如何透明地显示GIF图像?我使用的是Android 18 SDK.
pau*_*aul 19
这是一个对我有用的解决方法.这不是一个好的解决方案.它可能不适用于所有情况,并且图像处理有很大的开销.希望其他人能找到更好的解决方案.
在我的测试中,4.4中的GIF图像的透明度值为白色(-1)或黑色(-16777216).加载位图后,您可以将白/黑像素转换回透明.当然,这仅在图像的其余部分不使用相同颜色时才有效.如果是,那么您还将图像的部分转换为透明,在原始图像中不透明.就我而言,这不是问题.
您可以使用以下代码将白色或黑色像素转换为透明.
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
bitmap = eraseBG(bitmap, -1); // use for white background
bitmap = eraseBG(bitmap, -16777216); // use for black background
Run Code Online (Sandbox Code Playgroud)
private static Bitmap eraseBG(Bitmap src, int color) {
int width = src.getWidth();
int height = src.getHeight();
Bitmap b = src.copy(Config.ARGB_8888, true);
b.setHasAlpha(true);
int[] pixels = new int[width * height];
src.getPixels(pixels, 0, width, 0, 0, width, height);
for (int i = 0; i < width * height; i++) {
if (pixels[i] == color) {
pixels[i] = 0;
}
}
b.setPixels(pixels, 0, width, 0, 0, width, height);
return b;
}
Run Code Online (Sandbox Code Playgroud)
注意:我必须将位图复制到新的ARGB_8888图像才能使用.即使将位图加载为可变,我仍然无法修改像素.这就是为什么会有这么多开销的部分原因.
| 归档时间: |
|
| 查看次数: |
8659 次 |
| 最近记录: |