Komut satırını kullanarak bir görüntü dikey olarak nasıl bölünür?


19

Büyük bir 800x5000 resmim olduğunu varsayalım; komut satırını kullanarak bunu 800x1000 boyutlarında 5 ayrı görüntüye nasıl ayırabilirim?


2
Lütfen çözümü Q'nuza eklemeyin. Aşağıdaki cevabı kabul edildiği gibi işaretleyin.
slm

Yanıtlar:


27

Convert -crop geometri + repage kullanarak çözüldü:

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

Bunu bir grup dosyaya uygulamak istiyorsanız şunu deneyin:ls -1 *.png | sed 's,.*,& &,' | xargs -n 2 convert -crop 100%x20% +repage
JPT

23

ImageMagick'i kullanma:

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

Adlı dosyaların bir diziyi oluşturmak Will cropped_1.png, cropped_2.pngve bu kadar.

Referanslar


OP bunu kullanarak çözdüğünü söyledi convert -crop geometry +repage. Örneğin: convert -crop 100%x20% +repage image.png image.png.
slm

1
+repage hususlar yeniden: Görüntü ofset yetenekli biçimleri vb

Bu @ shley'nin cevabı ile nasıl karşılaştırılır?
CMCDragonkai

@CMCDragonkai aslında aynı, yüzdeleri kullanıyorlar, bu yüzden herhangi bir boyut görüntüsünü 800x5000 davası için özel olarak yazmak yerine 5 dikey dilime bölerler
outlyer

1

ImageMagick üzerime çökecekti, çünkü görüntü işleyemeyecek kadar büyüktü, bu yüzden diğer yöntemlere başvurmak zorunda kaldım.

Sonunda Python Image Library'yi kullandım.

OP sorusuna hızlı ve kirli bir cevap aşağıdaki gibidir:

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

Yukarıdaki kod, sabit kodlanmış son boyutlara sahiptir, ancak tüm girişler parametrelenmiş olarak kendi başına tam bir darbe komut dosyasına kolayca dönüştürülebilir. Eğer birinin böyle bir şeye ihtiyacı varsa.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.