Як розділити зображення вертикально за допомогою командного рядка?


19

Скажіть, у мене велике зображення розміром 800x5000; як би я розділив це на 5 окремих зображень розмірами 800x1000 за допомогою командного рядка?


2
Будь ласка, не додайте рішення до свого питання. Позначте відповідь нижче як прийняту.
slm

Відповіді:


27

Вирішили це за допомогою перетворення -кроп геометрії + відшкодування:

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

Якщо ви хочете застосувати це до групи файлів, спробуйте це:ls -1 *.png | sed 's,.*,& &,' | xargs -n 2 convert -crop 100%x20% +repage
JPT

23

Використання ImageMagick:

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

Буде створено послідовність файлів з ім'ям cropped_1.png, cropped_2.pngтощо.

Список літератури


ОП заявила, що це вирішило це за допомогою convert -crop geometry +repage. Наприклад: convert -crop 100%x20% +repage image.png image.png.
slm

1
+repage міркування щодо : зміщення зображень, здатних формати тощо

Як це порівнюється з відповіддю @ shley?
CMCDragonkai

@CMCDragonkai це по суті те саме, вони використовують відсотки, тому воно розділить зображення будь-якого розміру на 5 вертикальних фрагментів, а не буде написано спеціально для випадку
800x5000

1

ImageMagick зірветься на мене, тому що зображення було занадто великим, щоб воно обробляло, тому мені довелося вдатися до інших методів.

Я в кінцевому рахунку використовував бібліотеку зображень Python.

Швидка та брудна відповідь на питання ОП:

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

Вищенаведений код має кінцеві розміри, жорстко кодований, але його можна легко перетворити на власний сценарій повного удару з усіма параметрами вхідних даних. Якщо комусь колись потрібна така річ.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.