Подтвердить что ты не робот

Как конвертировать 32-битный BMP для хранения альфа-канала?

У меня есть PNG-изображение с альфой, мне нужно преобразовать его в BMP для загрузки в мое приложение OpenGL. Тем не менее, BMP имеет только 1 вариант для 32-битного, то есть XRBG, где "X" - это просто дополнительный байт для цели заполнения (4-байтовое выравнивание).

Вопрос заключается в том, как усугубить этот байт X, чтобы содержать альфа-канал, чтобы BMP (32-разрядный XRGB) можно было загрузить в приложение GL с прозрачными пикселями?

Может быть, мне нужно сделать свой собственный инструмент для этого преобразования? Мне нужно RGBA, а не "XRGB" или "ARGB", мне нужно прочитать файл BMP XRGB и сканировать пиксель за пикселем для преобразования в RGBA?

Каков наилучший способ в VС++, если преобразование является обязательным? Любое программное обеспечение, которое может сделать прозрачный BMP?

4b9b3361

Ответ 2

Вы можете использовать PixelFormer.

Если вы используете ULW_ALPHA в UpdateLayeredWindow() и LoadImage(), функция ожидает, что файл BMP должен быть 32 -битная BGRA Предварительно умноженной альфа и Верхний порядок строк), кроме того, что функция не будет отображать растровое изображение правильно.

Вы можете преобразовать PNG в BMP 32-bit BGRA с PixelFormer (шаг 2).

  • Откройте PixelFormer и нажмите "Файл" > "Создать":

введите описание изображения здесь

  1. Затем Файл > Экспорт

введите описание изображения здесь

P.S:.

Photoshop сломал поддержку при экспорте BMP с альфа-каналом (он не может делать альфа-версию, альфа-канал становится 0). Вы потеряете альфа-канал, но значение BGR будет загружаться правильно. Вы все еще можете использовать Photoshop, но должны вручную рисовать альфа на вкладке альфа-канала.

Gimp также имеет поврежденную поддержку при экспорте в формате BMP. LoadImage() ничего не загрузит, и вы не сможете увидеть изображение. Я подозреваю, что проблема связана с тем, что Gimp экспортирует BMP как Порядок строк сверху вниз.

Редактор ресурсов Visual Studio также имеет возможность создавать/редактировать 32bpp BGR, но не поддерживает альфа-канал

Ответ 3

Мне нужно было сделать то же самое и написал небольшой инструмент командной строки, который можно найти здесь.

Ответ 4

Программное обеспечение Opersource - ImageMagic или Gimp также может использоваться для этого преобразования изображений.