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?


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

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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.