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?

Foi útil?

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).

  1. Abra o PixelFormer e clique em Arquivo> Novo:

enter descrição da imagem aqui

  1. Em seguida, Arquivo> Exportar

enter descrição da imagem aqui

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top