Resolveu usando geometria convert -crop + repage:
convert -crop 100%x20% +repage image.png image.png
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?
Resolveu usando geometria convert -crop + repage:
convert -crop 100%x20% +repage image.png image.png
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.
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.