Eu tenho uma pasta de arquivos png que possuem fundos transparentes. Gostaria de convertê-los na linha de comando e manter os fundos transparentes das imagens.
Eu apreciaria qualquer ajuda.
Como os jpgs não suportam transparência, como posso especificar o valor hexadecimal da cor de fundo do jpg de saída? No momento, o padrão é #ffffff
? Eu tentei esse script, mas ele fornece os jpgs de saída em fundo branco:
mogrify -quality 100 -format jpg *.png
Atualizar
Eu criei esses arquivos png no inkscape. Devo mencionar que meu objetivo na conversão desses pngs em jpgs é livrar-se de bordas irregulares em objetos circulares ou angulares. Os pngs atualmente têm bordas irregulares e li que convertê-los em jpgs pode resolver esse problema. Contudo, a conversão através do método descrito na resposta de Christian Skjødt dá às imagens bordas irregulares ainda piores. Existe uma maneira de converter os pngs em jpg e também usar anti-aliasing ou talvez outra técnica para se livrar das bordas irregulares? Obrigado pela ajuda.
Respostas:
Para suavizar as bordas, você pode criar os PNGs 10x maiores que o tamanho desejado e redimensionar com suavização de borda para JPG. Fiz isso usando o Python e a Python Imaging Library com bons resultados, mas não sei como fazê-lo usando outras ferramentas.
fonte
O formato JPEG não suporta transparência - portanto, manter os fundos transparentes não é possível se você quiser (ou precisar) usar o formato JPEG. Consulte a Wikipedia para obter uma visão geral dos recursos de diferentes formatos de imagem.
Observe que o JPEG 2000 realmente suporta transparência, mas é muito menos comum que o formato JPEG. Depende do seu caso de uso se essa é uma alternativa viável.
fonte
Para sua segunda pergunta:
Para especificar a cor de fundo ao converter suas imagens, você pode usar a
-fill
opção:Usar
-background
fornece resultados semelhantes. Não esqueça o-opaque none
.fonte
Sinto muito, não há como, o
jpeg
formato não suporta um,alpha channel
então você não pode ter transparência.fonte
dependendo do que você está tentando fazer com a imagem, pode ser possível colocar o canal alfa em uma imagem em escala de cinza ou em uma máscara de bits, e o programa que estiver usando a imagem aplicará a imagem auxiliar como valores translúcidos / transparentes . Embora seja melhor modificar o programa para que ele suporte alfa png.
fonte