Como redimensionar um arquivo PNG da linha de comando?

4

Suponha que eu tenha uma imagem chamada 1.png , que é atualmente

500px : height
1000px : width

Quero redimensioná-lo para:

50px : height
100px : width

Deve ser exibido em formato PNG, não em JPG. Um exemplo seria muito apreciado.

    
por Braiam 26.06.2014 / 13:33

4 respostas

8

Eu usaria convert ou mogrify da suíte ImageMagick .

$ convert -resize 100x50 1.png 2.png

# or #

$ mogrify -resize 100x50 1.png

convert recebe um nome de arquivo de saída separado; criando um arquivo separado.
mogrify não recebe um nome de arquivo de saída separado; modificando o arquivo no lugar

    
por 26.06.2014 / 13:38
4

As respostas que você obteve até agora funcionarão nesse caso específico, porque suas imagens de origem e destino têm a mesma proporção. No entanto, se você quiser alterar para um tamanho arbitrário, eles falharão :

$ file foo.png 
foo.png: PNG image data, 1000 x 500, 8-bit/color RGB, non-interlaced
$ convert -resize 100x50 foo.png bar.png
$ file bar.png 
bar.png: PNG image data, 100 x 50, 8-bit colormap, non-interlaced

Como você pode ver acima, a conversão simples funciona bem quando não muda as proporções da imagem. Mas e se você quiser mudá-los?

$ convert -resize 200x50 foo.png bar.png
$ file bar.png 
bar.png: PNG image data, 100 x 50, 8-bit colormap, non-interlaced

Então, ao mudar as proporções, o comando acima falha. Para forçar o convert a alterar uma imagem desta forma, você precisa adicionar um ! ao final da especificação da geometria (e, como ! é um caractere especial para muitos shells, é necessário escapar dele \! ):

$ convert -resize 200x50\! foo.png bar.png
$ file bar.png 
bar.png: PNG image data, 200 x 50, 8-bit colormap, non-interlaced
    
por 26.06.2014 / 14:10
3

Use o Imagemagick para isso.

Leia a man page para uso correto, mas deve funcionar passando parâmetros, algo como

convert 1.png -resize 50x100 1-resized.png

    
por 26.06.2014 / 13:41
1

Uma alternativa ao ImageMagick é o netpbm venerável:

pngtopnm input.png | pnmscale -reduce 10 | pnmtopng > output.png
    
por 26.06.2014 / 14:25