Como dividir uma imagem verticalmente usando a linha de comando?

15

Digamos que eu tenha uma imagem grande de 800x5000; como eu dividiria isso em 5 imagens separadas com dimensões 800x1000 usando a linha de comando?

    
por shley 23.11.2014 / 14:40

3 respostas

20

Resolveu usando geometria convert -crop + repage:

convert -crop 100%x20% +repage image.png image.png
    
por 23.11.2014 / 16:26
19

Usando o ImageMagick:

$ convert -crop 800x1000 image.png cropped_%d.png

Cria uma sequência de arquivos denominados cropped_1.png , cropped_2.png e assim por diante.

Referências

por 23.11.2014 / 14:59
1

O ImageMagick falhava em mim, pois a imagem era grande demais para ser manipulada, então tive que recorrer a outros métodos.

Acabei usando a biblioteca de imagens do Python.

Uma resposta rápida e suja para a pergunta do OP é a seguinte:

from PIL import Image

im = Image.open("YourImage.yourformat")

for h in range(0, im.height, 1000):
     nim = im.crop((0, h, im.width-1, min(im.height, h+1000)-1))
     nim.save("PartialImage." + str(h) + ".yourformat")

O código acima tem os tamanhos finais codificados, mas pode ser facilmente transformado em um script de sopro completo com todas as entradas parametrizadas. Se alguém precisar de algo assim.

    
por 15.03.2018 / 04:36