Как преобразовать 32-битный BMP в альфа-канал?[закрыто]
Вопрос
У меня есть изображение PNG с альфа-каналом, мне нужно преобразовать его в BMP, чтобы загрузить в мое приложение OpenGL.Однако BMP имеет только 1 вариант для 32-битной версии, то есть XRBG, где «X» - это просто дополнительный байт для заполнения (4-байтовое выравнивание).
Вопрос в том, как утилизировать этот байт "X", чтобы он содержал альфа-канал, чтобы BMP (32-битный XRGB) можно было загрузить в приложение GL с прозрачными пикселями?
Может, мне придется создать собственный инструмент для этого преобразования?Мне нужен RGBA, а не XRGB или ARGB. Должен ли я читать BMP-файл XRGB и сканировать пиксель за пикселем для преобразования в RGBA?
Как лучше всего использовать VC ++, если преобразование является обязательным? Любое программное обеспечение, которое может сделать прозрачный BMP?
Решение
pixelformer говорит, что он может это сделать http://www.qualibyte.com/pixelformer/#color_depths
Другие советы
Вы можете использовать PixelFormer .
Если вы используете ULW_ALPHA в UpdateLayeredWindow () и LoadImage () , функция ожидает, что файл BMP должен быть 32 -бит BGRA (с предварительным умножением альфа и порядком строк сверху вниз ), кроме этого, функция не будет правильно отображать растровое изображение.
Вы можете преобразовать PNG в 32-битный BGRA BMP с помощью PixelFormer (шаг 2).
- Откройте PixelFormer и нажмите "Файл"> "Создать".
- Затем "Файл"> "Экспорт".
P.S .:
Photoshop не поддерживает экспорт BMP с альфа-каналом (он не может выполнять предварительное умножение альфа-канала, значение альфа-канала станет 0). Вы потеряете альфа-канал, но значение BGR загрузится правильно. Вы по-прежнему можете использовать Photoshop, но должны вручную нарисовать альфа-канал на вкладке альфа-канала.
GIMP также не поддерживает поддержку при экспорте в BMP. LoadImage () ничего не загружает, и вы не видите изображение. Я подозреваю, что эта проблема вызвана тем, что GIMP экспортирует BMP в порядке строк сверху вниз .
Редактор ресурсов Visual Studio также может создавать / редактировать BGR 32bpp, но не поддерживает альфа-канал
Однажды мне нужно было сделать то же самое, и я написал небольшой инструмент командной строки, который можно найти здесь .
Программное обеспечение с открытым исходным кодом. Для преобразования изображений также можно использовать ImageMagick или Gimp .