Come dividere un'immagine verticalmente usando la riga di comando?


19

Supponiamo che io abbia una grande immagine 800x5000; come lo dividerei in 5 immagini separate con dimensioni 800x1000 usando la riga di comando?


2
Non aggiungere la soluzione al tuo Q. Contrassegna la risposta di seguito come accettata.
slm

Risposte:


27

Risolto usando convert -crop geometry + repage:

convert -crop 100%x20% +repage image.png image.png

Se si desidera applicare questo a un batch di file, provare questo:ls -1 *.png | sed 's,.*,& &,' | xargs -n 2 convert -crop 100%x20% +repage
JPT

23

Utilizzando ImageMagick:

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

Creerà una sequenza di file denominati cropped_1.png, cropped_2.pnge così via.

Riferimenti


L'OP ha detto che questo ha risolto usando convert -crop geometry +repage. Ad esempio: convert -crop 100%x20% +repage image.png image.png.
slm

1
+repage considerazioni relative a : formati di offset immagine ecc.

Come si confronta con la risposta di @ shley?
CMCDragonkai,

@CMCDragonkai è essenzialmente lo stesso, usano le percentuali in modo da dividere l'immagine di qualsiasi dimensione in 5 sezioni verticali invece di essere scritta appositamente per il caso
800x5000

1

ImageMagick si sarebbe schiantato su di me, perché l'immagine era troppo grande per essere gestita, quindi ho dovuto ricorrere ad altri metodi.

Ho finito per usare la libreria di immagini Python.

Segue una risposta rapida e sporca alla domanda OP:

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")

Il codice sopra ha le dimensioni finali hardcoded, ma può essere facilmente trasformato in uno script completo con tutti gli input parametrizzati. Se uno ha mai bisogno di una cosa del genere.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.