Как преобразовать 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).
- откройте PixelFormer и нажмите Файл > Создать:
- Затем Файл > Экспорт
П. С.:
Photoshop сломали поддержку при экспорте bmp с альфа-каналом (он не может сделать premultiply alpha, значение альфа-канала станет 0). Вы потеряете альфа-канал, но значение BGR будет загружаться правильно. Ты все еще можешь используйте Photoshop, но вручную нарисуйте Альфа на вкладке Альфа-канала.
Gimp также сломали поддержку, когда вы экспортируете как bmp. LoadImage() ничего не загружает, и вы не можете видеть изображение. Я подозреваю, что эта проблема вызвана экспортом GIMP BMP как порядок строк сверху вниз.
редактор ресурсов Visual Studio также есть возможность создавать / редактировать 32bpp BGR, но не поддерживает альфа-канал
Я как-то нужно сделать то же самое и написал небольшой инструмент командной строки, который можно найти здесь.
программное обеспечение Opersource -ImageMagic или Gimp можно также использовать для этого преобразования изображения.