Domanda

Ho un'immagine PNG con alpha, devo convertirla in BMP per essere caricata nella mia applicazione OpenGL.Tuttavia, BMP ha solo 1 opzione per 32 bit, ovvero XRBG dove "X" è solo un byte aggiuntivo per scopi di riempimento (allineamento a 4 byte).

La domanda è come ottimizzare questo byte "X" per contenere il canale alfa, in modo che il BMP (XRGB a 32 bit) possa essere caricato nell'applicazione GL con pixel trasparenti?

Forse devo creare il mio strumento per eseguire questa conversione?Quello di cui ho bisogno è RGBA e non "XRGB" o "ARGB", devo leggere il file BMP XRGB e scansionare pixel per pixel per convertirlo in RGBA?

Qual è il modo migliore in VC ++ se la conversione è un must? Qualche software in grado di rendere trasparente BMP?

È stato utile?

Soluzione

Altri suggerimenti

Puoi utilizzare PixelFormer .

Se utilizzi ULW_ALPHA su UpdateLayeredWindow () e LoadImage () , la funzione prevede che il file BMP debba essere 32 -bit BGRA (con alfa premoltiplicato e ordine delle righe in alto e in basso ) diverso da quello la funzione non visualizzerà correttamente la bitmap.

Puoi convertire PNG in BMP BGRA a 32 bit con PixelFormer (passaggio 2).

  1. Apri PixelFormer e fai clic su File> Nuovo:

invio descrizione dell

  1. Quindi File> Esporta

invio descrizione dell

P.S .:

Photoshop non supporta il supporto durante l'esportazione bmp con il canale alfa (non può eseguire la moltiplicazione alpha premoltiplicata, il valore del canale alfa diventerà 0). Perderai il canale alfa ma il valore BGR verrà caricato correttamente. Puoi ancora usare Photoshop ma devi disegnare manualmente alfa nella scheda del canale alfa.

Anche Gimp ha un supporto non funzionante, quando esporti come bmp. LoadImage () non caricherà nulla e non potrai vedere l'immagine. Ho il sospetto che questo problema sia causato dall'esportazione di BMP da parte di Gimp come ordine di righe dall'alto verso il basso .

L ' editor di risorse di Visual Studio ha anche l'opzione per creare / modificare BGR a 32 bpp ma non supporta il canale alfa

Una volta dovevo fare la stessa cosa e ho scritto un piccolo strumento a riga di comando che può essere trovato qui .

Software open source: per questa conversione di immagini è possibile utilizzare anche ImageMagick o Gimp .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top