Tenho algumas imagens PNG com transparência e preciso criar versões com a camada de imagem composta em um fundo branco. Eu tentei várias coisas com as operações de "conversão" do Image Magick, mas nada acontece ou ocorre um erro. Eu não quero ir para um formulário JPG intermediário porque não quero os artefatos. Claro que é fácil fazer isso no Gimp ou no Photoshop ou o que quer que seja, mas eu prefiro escrever na linha de comando, porque existem muitas dessas coisas.
Um exemplo de um comando Image Magick que não funciona é:
convert img1.png -background white -flatten img1-white.png
Isso resulta em um erro.
Obrigado!
png
imagemagick
alpha-transparency
Pontudo
fonte
fonte
Respostas:
Isso funciona para mim:
Referências da documentação:
-flatten
opção de linha de comando-layers
opção de linha de comando (-flatten
é equivalente a-layers flatten
)fonte
-flatten
. Ele achatará as páginas em uma página.mogrify -flatten *.png
por precaução, não se esqueça de fazer backup. Mais informações aqui: imagemagick.org/script/mogrify.phpExemplo:
Sinta-se livre para substituir
white
por qualquer outra cor que desejar. A documentação do Imagemagick diz isso sobre a-alpha remove
operação:fonte
-background white
não é necessário (provavelmente é para outras cores).-alpha off
.convert image.png -background white -alpha off white.png
produziu uma imagem com fundo preto.convert image.png -background "#00ff33" -alpha off 00ff33.png
produziu um fundo pretoAchatar a imagem e aplicar a imagem de fundo é simples no ImageMagick
No entanto, a ordem dos comandos é muito importante
Para aplicar qualquer plano de fundo em uma imagem transparente e nivelá-la, primeiro aplique o plano de fundo e depois aplaná-la. O contrário não funciona.
fonte
O único que funcionou para mim foi uma mistura de todas as respostas:
fonte
... -background "#010203" ...
vez de usar o branco.mogrify -background white -flatten */*.png
-alpha remove
Foi o que fez por mimveja como substituir a mesma imagem em todas as pastas em um diretório por branco em vez de transparente:
mogrify -background white -flatten */*.png
fonte
O uso de -flatten me deixou completamente louco, porque -flatten em combinação com mogrify crop e redimensionamento simplesmente não funcionam. O oficial e para mim a única maneira correta é "remover" o canal alfa.
-alpha remove -alpha off (não é necessário com JPG)
Veja a documentação: http://www.imagemagick.org/Usage/masking/#remove
fonte
convert imgWithTranspBkg.png -alpha remove -alpha off bkg.jpg resultImg.png
A seção Remover alfa do Guia de uso do ImageMagick sugere usar a
-alpha remove
opção, por exemplo:... usando a
-background
cor de sua escolha.O guia declara:
Além disso, adiciona a nota:
Portanto, se você não precisar do canal alfa, poderá diminuir o tamanho da imagem de saída adicionando a
-alpha off
opção, por exemplo:Há mais detalhes sobre outras técnicas frequentemente usadas para remover a transparência descritas na seção Removendo a transparência das imagens .
Nesta seção, há uma menção importante a ser usada
-flatten
como técnica para remover a transparência:Portanto, se você estiver convertendo várias imagens de uma só vez, por exemplo, gerando miniaturas a partir de um arquivo PDF,
-flatten
não fará o que deseja (ele achatará todas as imagens de todas as páginas em uma imagem). Por outro lado, o uso da-alpha remove
técnica ainda produzirá várias imagens, cada uma com a transparência removida.fonte
Parece que seu comando está correto, portanto, o problema pode estar relacionado à falta de suporte para PNG (). Você pode verificar
convert -list configure
ou apenas tentar o seguinte:fonte
libpng12-0
instalado e funcionando. Você pode ver png se você executar isso?convert -list configure | grep \png
Esta não é exatamente a resposta para sua pergunta, mas eu a encontrei enquanto tentava descobrir como remover o canal alfa, então decidi adicionar esta resposta aqui:
Se você deseja remover o canal alfa usando o imagemagick, pode usar este comando:
fonte
Bem, parece que minha decisão de instalar "graphics magick" sobre "image magick" tem algumas arestas - quando eu reinstalo a "image magick" genuína e antiga, o comando acima funciona perfeitamente.
editar , muito tempo depois - um dia desses vou verificar se "gráficos mágicos" corrigiu esse problema.
fonte
Eu precisava de: ambos
-alpha background
e-flatten
, ou-fill
.Criei um novo PNG com fundo transparente e um ponto vermelho no meio.
convert image.png -background green -alpha off green.png
falhou: produziu uma imagem com fundo pretoconvert image.png -background green -alpha background -flatten green.png
produziu uma imagem com o fundo verde correto.Obviamente, com outro arquivo que eu renomeei
image.png
, ele não conseguiu fazer nada. Para esse arquivo, descobri que a cor dos pixels transparentes era "# d5d5d5", então preenchi essa cor com verde:convert image.png -fill green -opaque "#d5d5d5" green.png
substituiu os pixels transparentes pelo verde correto.fonte
convert image.png -background green -alpha background -alpha off green.png
ouconvert image.png -background green -alpha background -alpha remove green.png
ouconvert image.png -background green -flatten green.png
Opção sem linha de comando: abra o arquivo PNG no Windows Paint e clique em Salvar.
fonte
isso cria uma imagem apenas colocando o primeiro com transparência no topo do segundo
originalmente encontrou a dica neste post
fonte
Para remover o canal alfa do arquivo, use a opção alpha off :
fonte
Eu vi essa pergunta e respostas que realmente me ajudaram, mas era necessário fazê-lo para muitos arquivos. Portanto, caso você tenha várias imagens (imagens PNG) em uma pasta e queira fazer tudo:
fonte
É -alpha off, NÃO -alpha remove! O upload da loja de aplicativos para iOS falha quando há um canal alfa em qualquer ícone!
Aqui está como fazer isso: mogrify -alpha off * .png
fonte