Прозрачные пиксели в моем растровом изображении отображаются белым цветом

Я использую код C, чтобы получить frame из файла GIF, и он работает нормально, используя ffmpeg библиотека av_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);
                    }
                }
            }

Ничего не случилось, и он все еще белый. Затем я преобразовал все прозрачные пиксели в ПРОЗРАЧНЫЕ!! и угадайте что, это работает!

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 ответов

Другие вопросы по тегам