Converter BMP para PNG enquanto preserva o canal alfa

3

Eu tenho uma imagem armazenada no formato BMP e gostaria de convertê-la em PNG usando imagemagick.

Eu olhei para os pixels em um visualizador hexadecimal e notei que eles são armazenados em 32bpp, então existe um canal alfa. Os pixels transparentes têm o valor RGBA (255, 255, 255, 0) e o Paint.NET os seleciona como pixels brancos, provavelmente porque não espera que os BMPs tenham pixels transparentes?

De qualquer forma, o comando que usei é

convert -alpha on -quality 95 in.bmp out.png

No entanto, quando abri a imagem resultante no Paint.NET (que geralmente interpreta pixels transparentes corretamente), esses pixels transparentes ainda eram brancos.

Estou convertendo as imagens incorretamente? Eu gostaria que os pixels com um valor alfa de 0 aparecessem transparentes no editor de imagens que eu geralmente uso.

    
por That Umbrella Guy 24.08.2013 / 04:29

2 respostas

5

Você descobriu um bug no ImageMagick. Isso será corrigido no ImageMagick 6.8.7-9. Eu sou um dos desenvolvedores do ImageMagick e acabei de confirmar o nosso repositório SVN ( link ).

    
por 30.11.2013 / 22:17
1

Pode não ser um canal alfa. Se for um arquivo de formato bitmap v4, ele pode ter um canal alfa. Para versões anteriores, ainda é possível armazenar os pixels como 32 bits, mas o bit superior é reservado e sempre zero .

Veja um exemplo de um bmp de 32 bits com alfa Aqui está um exemplo de um bmp de 32 bits com sem alfa

A imagem de exemplo nos comentários não tem canal alfa de acordo com o GIMP e identify -verbose . O melhor que você pode fazer é tornar o plano de fundo branco transparente com

convert sample.bmp -transparent white alpha.png
    
por 07.09.2013 / 14:54