我的位图中的透明像素显示为白色

时间:2016-02-11 07:48:37

标签: android bitmap ffmpeg native-code libyuv

我使用c代码从gif文件中获取frame并使用ffmpegav_read_frame正常工作,然后我将转换后的图片转换为这种格式为BGRA to ARGB格式,使用此方法libyuv::ABGRToARGB

在java部分,我收到了bitmap,当我把它放在ImageView时,透明像素被绘制为白色。

 Bitmap bitmap= Bitmap.createBitmap(150, 150, Bitmap.Config.ARGB_8888);
 getGifFrame(gifFile,bitmap); //native method which get image frame from gif file.
 imageTest.setImageBitmap(backgroundBitmap);//this bitmap in debug mode I can see that it has transparent pixels, but in drawn it appears white!

即使我循环返回bitmap pixels并检查每个像素,我发现它们是透明的!

          for (int x = 0; x < b.getWidth(); x++)
            {
                for (int y = 0; y < b.getHeight(); y++)
                {
                    int color = b.getPixel(x, y);
                    if (color == Color.WHITE)//This condition never occurred 
                    {
                        b.setPixel(x, y, Color.TRANSPARENT);
                    }
                }
            }

什么都没发生,它仍然是白色的。然后我将所有透明像素转换为TRANSPARENT !!并猜猜是什么,它正在发挥作用!

else if (color == Color.TRANSPARENT)
{
  b.setPixel(x, y, Color.TRANSPARENT);
}

我不明白为什么会这样。任何帮助,将不胜感激。

编辑1: 我从位图中获取所有像素并再次设置它们而不做任何事情,它也有效!?

  bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
  bitmap.setPixels(pixels, 0, width, 0, 0, width,height);

0 个答案:

没有答案