Прозрачные пиксели в моем растровом изображении отображаются белым цветом
Я использую код 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);