Как преобразовать 32-битный BMP в альфа-канал? [закрытый]

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

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

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

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

4 ответов


pixelformer говорит, что он может это сделать http://www.qualibyte.com/pixelformer/#color_depths


можно использовать PixelFormer.

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

вы можете конвертировать PNG в BMP 32-bit BGRA с помощью PixelFormer (step 2).

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

enter image description here

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

enter image description here

П. С.:

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

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

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


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


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