Làm thế nào để phân chia một hình ảnh theo chiều dọc bằng cách sử dụng dòng lệnh?


19

Nói rằng tôi có một hình ảnh lớn 800x5000; Làm cách nào để chia thành 5 hình ảnh riêng biệt với kích thước 800x1000 bằng dòng lệnh?


2
Vui lòng không thêm giải pháp vào Q. Đánh dấu câu trả lời dưới đây là được chấp nhận.
slm

Câu trả lời:


27

Đã giải quyết nó bằng cách sử dụng chuyển đổi hình học -crop + repage:

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

Nếu bạn muốn áp dụng điều này cho một loạt các tệp, hãy thử điều này:ls -1 *.png | sed 's,.*,& &,' | xargs -n 2 convert -crop 100%x20% +repage
JPT

23

Sử dụng ImageMagick:

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

Sẽ tạo một chuỗi các tệp có tên cropped_1.png, cropped_2.pngv.v.

Tài liệu tham khảo


OP nói rằng điều này đã giải quyết nó bằng cách sử dụng convert -crop geometry +repage. Ví dụ : convert -crop 100%x20% +repage image.png image.png.
slm

1
+repage cân nhắc lại: định dạng bù hình ảnh có khả năng, v.v.

Làm thế nào điều này so sánh với câu trả lời của @ shley?
CMCDragonkai

@CMCDragonkai về cơ bản là giống nhau, họ đang sử dụng tỷ lệ phần trăm nên nó sẽ chia bất kỳ hình ảnh kích thước nào thành 5 lát dọc thay vì được viết riêng cho trường hợp
800x5000

1

ImageMagick sẽ sụp đổ với tôi, vì hình ảnh quá lớn để có thể xử lý, vì vậy tôi đã phải dùng đến các phương pháp khác.

Tôi đã kết thúc bằng Thư viện hình ảnh Python.

Một câu trả lời nhanh và bẩn cho câu hỏi OP sau:

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

Đoạn mã trên có kích thước cuối cùng được mã hóa cứng, nhưng nó có thể dễ dàng chuyển thành tập lệnh thổi hoàn toàn của riêng nó với tất cả các đầu vào được tham số hóa. Nếu một người cần một điều như vậy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.