Pregunta

Tengo una imagen PNG con alfa, necesito convertirla a BMP para cargarla en mi aplicación OpenGL.Sin embargo, BMP tiene solo una opción para 32 bits, es decir, XRBG donde 'X' es solo un byte adicional para fines de relleno (alineación de 4 bytes).

La pregunta es cómo ultilizar este byte 'X' para que contenga un canal alfa, de modo que el BMP (XRGB de 32 bits) pueda cargarse en la aplicación GL con píxeles transparentes.

¿Quizás deba crear mi propia herramienta para realizar esta conversión?Lo que necesito es RGBA, y no 'XRGB' o 'ARGB', ¿tengo que leer el archivo BMP XRGB y escanear píxel por píxel para convertir a RGBA?

¿Cuál es la mejor forma en VC ++ si la conversión es imprescindible? ¿Algún software que pueda hacer BMP transparente?

¿Fue útil?

Solución

pixelformer dice que puede hacerlo http://www.qualibyte.com/pixelformer/#color_depths

Otros consejos

Puede utilizar PixelFormer .

Si usa ULW_ALPHA en UpdateLayeredWindow () & LoadImage () , la función espera que el archivo BMP deba ser 32 -bit BGRA (con Alfa premultiplicado y orden de filas hacia abajo y arriba ) aparte de eso, la función no mostrará el mapa de bits correctamente.

Puede convertir PNG a BMP BGRA de 32 bits con PixelFormer (paso 2).

  1. Abra PixelFormer y haga clic en Archivo> Nuevo:

ingrese descripción de la imagen aquí

  1. Luego Archivo> Exportar

ingrese descripción de la imagen aquí

P.D .:

Photoshop ha roto el soporte al exportar bmp con canal alfa (no puede hacer alfa premultiplicado, el valor del canal alfa se convertirá en 0). Perderá el canal alfa, pero el valor de BGR se cargará correctamente. Todavía puede usar Photoshop, pero debe dibujar alfa manualmente en la pestaña del canal alfa.

Gimp también tiene soporte roto, cuando exporta como bmp. LoadImage () no cargará nada y no puede ver la imagen. Sospecho que este problema se debe a que Gimp exportó BMP como orden de fila de arriba hacia abajo .

El editor de recursos de Visual Studio también tiene la opción de crear / editar 32bpp BGR pero no es compatible con el canal alfa

Una vez tuve que hacer lo mismo y escribí una pequeña herramienta de línea de comandos que se puede encontrar aquí .

Los softwares de código abierto: ImageMagick o Gimp también se pueden utilizar para esta conversión de imágenes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top