Bagaimana cara membagi gambar secara vertikal menggunakan baris perintah?

19

Katakanlah saya memiliki gambar 800x5000 besar; bagaimana saya membaginya menjadi 5 gambar terpisah dengan dimensi 800x1000 menggunakan baris perintah?

shley
sumber
2
Tolong jangan tambahkan solusi ke Q. Tandai jawaban di bawah ini sebagai diterima.
slm

Jawaban:

27

Memecahkannya menggunakan convert -crop geometry + repage:

convert -crop 100%x20% +repage image.png image.png
shley
sumber
Jika Anda ingin menerapkan ini pada kumpulan file, coba ini:ls -1 *.png | sed 's,.*,& &,' | xargs -n 2 convert -crop 100%x20% +repage
JPT
23

Menggunakan ImageMagick:

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

Akan membuat urutan dari file bernama cropped_1.png, cropped_2.pngdan sebagainya.

Referensi

outlyer
sumber
OP mengatakan bahwa ini diselesaikan dengan menggunakan convert -crop geometry +repage. Sebagai contoh: convert -crop 100%x20% +repage image.png image.png.
slm
1
+repage Pertimbangan ulang: format mampu mengimbangi gambar dll.
Bagaimana ini dibandingkan dengan jawaban @ shley?
CMCDragonkai
@CMCDragonkai pada dasarnya sama, mereka menggunakan persentase sehingga akan membagi gambar ukuran apa pun menjadi 5 irisan vertikal daripada ditulis secara khusus untuk kasing 800x5000
outlyer
1

ImageMagick akan menabrak saya, karena gambar terlalu besar untuk ditangani, jadi saya harus menggunakan metode lain.

Saya akhirnya menggunakan Python Image Library.

Jawaban cepat dan kotor untuk pertanyaan OP berikut:

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

Kode di atas memiliki ukuran akhir hardcoded, tetapi dapat dengan mudah diubah menjadi skrip pukulan penuh dengan semua input parameter. Jika seseorang membutuhkan hal seperti itu.

Fabio A.
sumber