Como redimensionar uma imagem através do terminal?

Como redimensionar uma imagem através do terminal?

Eu tenho Ubuntu 10.04. Converti a imagem através do terminal usando o seguinte comando:

convert myfigure.png myfigure.jpg

Mas quero redimensionar a altura e a largura da imagem convertida. Há alguma maneira de fazer isso?

Responder1

Mesmo comando, com uma opção extra:

convert myfigure.png -resize 200x100 myfigure.jpg

ou

convert -resize 50% myfigure.png myfigure.jpg

Para redimensionar vários arquivos, você pode tentar o seguinte comando (conforme sugerido por@teste30)

find . -maxdepth 1 -iname "*.jpg" | xargs -L1 -I{} convert -resize 30% "{}" _resized/"{}"

Responder2

Se você quiser apenas CLI:

sudo apt-get install imagemagick
mogrify -resize 320x240 Image.png 
mogrify -resize 50% Image.png
mogrify -resize 320x240 *.jpg

Se você quiser experimentar a GUI:

Instalarnautilus-image-converter

sudo apt-get install nautilus-image-converter

Ele adiciona dois itens de menu de contexto no nautlius para que você possa clicar com o botão direito e escolher "Redimensionar imagem" (o outro é "Girar imagem").

Você pode criar um diretório inteiro de imagens de uma só vez, se quiser, e nem precisa abrir um aplicativo para fazer isso.

Responder3

imgpé um utilitário relativamente novo que redimensiona e gira imagens. Possui mais recursos do que o conversor de imagem nautilus.

Por exemplo:

imgp -x 1366x768 *

Responder4

Como o Ubuntu vem com Python, você também pode usar um script Python para conseguir isso com um pouco mais de controle sobre o que acontece - vejaeste stackoverflowpergunta, por exemplo, scripts. Esses exemplos usam apenas a biblioteca padrão.

Roteiro #1

import os, sys
import Image

size = 128, 128

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".thumbnail"
    if infile != outfile:
        try:
            im = Image.open(infile)
            im.thumbnail(size, Image.ANTIALIAS)
            im.save(outfile, "JPEG")
        except IOError:
            print "cannot create thumbnail for '%s'" % infile

E outro exemplo onde você só precisa especificar a largura (como variável de largura):

Roteiro #2

from PIL import Image
import sys

filename = sys.argv[1:]
basewidth = 300
img = Image.open(filename)
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize), Image.ANTIALIAS)
img.save(filename) 

Agora, como fazer isso através do terminal...

sudo nano resizescript.py

Cole um desses blocos de código no editor de texto. Ctrl+x para sair (diga sim para salvar as alterações).

Para usar o Script nº 1:

python resizescript.py yourfilenamehere.jpg

Para usar o Script nº 2:

python resizescript.py yourfilenamehere.jpg

Você deve estar no mesmo diretório dos arquivos de imagem para ambos os scripts. O primeiro reduz a imagem para 128x128 pixels. O segundo script tem 300 pixels de largura e calcula a altura proporcional. Esta é mais uma resposta do Python, mas tecnicamente é feita por meio do terminal.

informação relacionada