Прозрачность в FreeImage
Я успешно конвертирую 24-битное PNG-изображение с прозрачным фоном в 4-битное PNG-изображение с помощью оболочки FreeImage C#. Однако фон 4-битного изображения становится черным, а не прозрачным. Вот код Есть идеи?
FIBITMAP dib = FreeImageAPI.FreeImage.LoadEx ("C: \ title_normal.png"); FreeImage.SetTransparent (dib, true); FreeImage.SaveEx (ref dib, "C: \ title_normal.png", FREE_IMAGE_FORMAT.FIF_PNG, FREE_IMAGE_SAVE_FLAGS.PNG_Z_DEFAULT_COMPRESSION, FREE_IMAGE_COLOR_DEPTH.FICD_04_BPP, true);
2 ответа
Решение
На самом деле я разобрался. Вот код, если кто-то заинтересован:
dib = FreeImageAPI.FreeImage.LoadEx("C:\\title_selected.png");
dib = FreeImage.ConvertColorDepth(dib, FREE_IMAGE_COLOR_DEPTH.FICD_04_BPP);
byte[] Transparency = new byte[1];
Transparency[0] = 0x00;
FreeImage.SetTransparencyTable(dib, Transparency);
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_PNG, dib, "C:\\title_selected1.png", FREE_IMAGE_SAVE_FLAGS.DEFAULT);
Результирующее изображение - 4-битный прозрачный PNG!
Я не думаю, что 4-битный PNG имеет канал для Альба.
проверьте здесь