android实现gif背景透明,透明GIF在Android ImageView
這是一個對我有用的解決方法.這不是一個很好的解決方案.它在所有情況下可能無法正常工作,并且在圖像處理中有明顯的開銷.希望有人能找到更好的解決方案.
在我的測試中,4.4中的GIF圖像具有白色(-1)或黑色(-16777216)的透明度值.加載位圖后,您可以將白/黑像素轉(zhuǎn)換回透明.當(dāng)然這只有在其他圖像不使用相同顏色的情況下才有效.如果是這樣,那么您還將將您的圖像的部分轉(zhuǎn)換為在原始圖像中不透明的透明.在我的情況下,這不是問題.
您可以使用以下代碼將白色或黑色像素轉(zhuǎn)換為透明.
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
bitmap = eraseBG(bitmap, -1); // use for white background
bitmap = eraseBG(bitmap, -16777216); // use for black background
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;
}
注意:我必須將Bitmap復(fù)制到一個新的ARGB_8888圖像才能正常工作.即使將位圖加載為可變的,我仍然無法修改像素.這部分是為什么有這么多的開銷.
總結(jié)
以上是生活随笔為你收集整理的android实现gif背景透明,透明GIF在Android ImageView的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux磁盘与分区命名:sda, sd
- 下一篇: oracle sql 常用语句大全,SQ