Como converter BMP de 32 bits para conter canal alfa?[Fechado]
Pergunta
Eu tenho uma imagem PNG com alfa, preciso convertê-la em BMP para ser carregada no meu aplicativo OpenGL.No entanto, o BMP tem apenas 1 opção para 32 bits, que é XRBG, onde 'X' é apenas um byte extra para fins de preenchimento (alinhamento de 4 bytes).
A questão é como ultilizar este byte 'X' para conter o canal alfa, de modo que o BMP (XRGB de 32 bits) possa ser carregado no aplicativo GL com pixels transparentes?
Talvez eu tenha que fazer minha própria ferramenta para fazer essa conversão?O que eu preciso é RGBA, e não 'XRGB' ou 'ARGB'. Preciso ler o arquivo XRGB BMP e digitalizar pixel por pixel para converter para RGBA?
Qual é a melhor maneira em VC ++ se a conversão é uma necessidade? Qualquer software que pode tornar o BMP transparente?
Solução
pixelformer diz que pode fazer isso http://www.qualibyte.com/pixelformer/#color_depths
Outras dicas
Você pode usar PixelFormer .
Se você usar ULW_ALPHA em UpdateLayeredWindow () & LoadImage () , a função espera que o arquivo BMP precise ser 32 -bit BGRA (com Alfa pré-multiplicado e ordem de linha para baixo-topo ) diferente de que a função não exibirá o bitmap corretamente.
Você pode converter PNG em BMP BGRA de 32 bits com o PixelFormer (etapa 2).
- Abra o PixelFormer e clique em Arquivo> Novo:
- Em seguida, Arquivo> Exportar
P.S .:
O Photoshop quebrou o suporte ao exportar bmp com canal alfa (ele não pode pré-multiplicar alfa, o valor do canal alfa se tornará 0). Você perderá o canal alfa, mas o valor BGR será carregado corretamente. Você ainda pode usar o Photoshop, mas deve desenhar manualmente o alfa na guia do canal alfa.
O Gimp também quebrou o suporte, quando você exportou como bmp. LoadImage () não carrega nada e você não consegue ver a imagem. Suspeito que esse problema seja causado pelo Gimp exportando BMP como ordem de linha de cima para baixo .
Editor de recursos do Visual Studio também tem a opção de criar / editar 32bpp BGR, mas não oferece suporte ao canal alfa
Certa vez, eu precisava fazer a mesma coisa e escrevi uma pequena ferramenta de linha de comando que pode ser encontrada aqui .
Softwares de código aberto - ImageMagick ou Gimp também podem ser usados para esta conversão de imagem.