コマンドラインを使用して画像を垂直に分割する方法は?


19

800x5000の大きな画像があるとします。コマンドラインを使用して、800x1000のサイズの5つの画像に分割するにはどうすればよいですか?


2
ソリューションをQに追加しないでください。以下の回答を承認済みとしてマークしてください。
slm

回答:


27

convert -crop geometry + repageを使用して解決しました。

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.pngcropped_2.png、とになります。

参照資料


OPは、これを使用してこれを解決したと述べましたconvert -crop geometry +repage。例:convert -crop 100%x20% +repage image.png image.png
slm

1
+repage 考慮事項:画像オフセット対応フォーマットなど

これは@shleyの答えと比較してどうですか?
CMCDragonkai

@CMCDragonkaiそれは代わり800x5000場合について具体的に書き込まれている5つの垂直スライスに任意のサイズの画像を分割しますので、それらがパーセントを使用している、本質的には同じだ
outlyer

1

ImageMagickは、画像が大きすぎて処理できないためにクラッシュします。そのため、他の方法に頼らなければなりませんでした。

結局、Python Image Libraryを使用しました。

OPの質問に対する迅速で汚い答えは次のとおりです。

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

上記のコードの最終サイズはハードコーディングされていますが、すべての入力がパラメーター化された独自のフルブロースクリプトに簡単に変換できます。そのようなことが必要な場合。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.