Comment diviser une image verticalement en utilisant la ligne de commande?

19

Disons que j'ai une grande image 800x5000; comment pourrais-je diviser cela en 5 images distinctes aux dimensions 800x1000 en utilisant la ligne de commande?

shley
la source
2
Veuillez ne pas ajouter la solution à votre Q. Marquez la réponse ci-dessous comme acceptée.
slm

Réponses:

27

Résolu en utilisant la géométrie convert -crop + repage:

convert -crop 100%x20% +repage image.png image.png
shley
la source
Si vous souhaitez l'appliquer à un lot de fichiers, essayez ceci:ls -1 *.png | sed 's,.*,& &,' | xargs -n 2 convert -crop 100%x20% +repage
JPT
23

Utilisation d'ImageMagick:

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

Créera une séquence de fichiers nommés cropped_1.png, cropped_2.pngetc.

Les références

extérieurement
la source
Le PO a déclaré que cela l'avait résolu en utilisant convert -crop geometry +repage. Par exemple: convert -crop 100%x20% +repage image.png image.png.
slm
1
+repage considérations
Comment cela se compare-t-il à la réponse de @ shley?
CMCDragonkai
@CMCDragonkai c'est essentiellement la même chose, ils utilisent des pourcentages donc il divisera n'importe quelle taille d'image en 5 tranches verticales au lieu d'être écrit spécifiquement pour le cas
800x5000
1

ImageMagick se plantait sur moi, car l'image était trop grande pour être gérée, j'ai donc dû recourir à d'autres méthodes.

J'ai fini par utiliser la bibliothèque d'images Python.

Une réponse rapide et sale à la question OP suit:

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

Le code ci-dessus a les tailles finales codées en dur, mais il peut être facilement transformé en un script complet de coup avec toutes les entrées paramétrées. Si jamais on a besoin d'une telle chose.

Fabio A.
la source