題 使用ImageMagick組合多個圖像


我想使用ImageMagick將多個圖像組合成一個圖像。為了更好地解釋一下,我希望結果看起來與此類似:

也就是說,我有很多截圖,我想把它們變成一張圖像,原始圖像在彼此的頂部。

通過谷歌搜索,我遇到了'複合'命令,但我不知道是否,在這種情況下如何使用它來獲得我想要的結果。


148
2018-05-30 18:30


起源


你看了嗎 imagemagick多圖像層示例? - timbooo
stackoverflow.com/questions/12076293/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


答案:


對於任意數量的輸入文件 命名 in-<某物>.jpg

convert -append in-*.jpg out.jpg

為了附加特定文件,或者跳過數字而不是獲取完整的“glob”,你可以明確地提到輸入文件並放入 append 後來命令

轉換in-1.jpg in-5.jpg in-ñ.jpg +追加out-in1-plus-in5-and-inñ.JPG

您可以使用 -append (代替 +append)用於垂直粘貼。

要么:

montage -mode concatenate -tile 1x in-*.jpg out.jpg

還會創建一個文件 out.jpg 包含源圖像的垂直連接。

convert

對於單行或列中的簡單連接, append 的選擇 convert 工具就足夠了。注意 -append 垂直連接所有圖像,創建一列 ñ 行, 和 +append 水平連接,創建一行 ñ 列。

(看到 ImageMagick:命令行選項。)

montage

為了更好地控制佈局,我們需要 montage 工具。 montage -mode concatenate 將輸入圖像粘合在一起 append 選項和 -tile 1x 控制要應用的佈局。

tile 遵循格式 ×,但任何一方都可能失踪而且 montage 將弄清楚如何滿足約束。

我們正在使用 1x (這裡只有一列有任意數量的行)以獲得相同的效果 -append。沒有 -tile 1x,它會加入像這樣的圖像 +append,默認為 -tile x1 (一行中任意數量的列)。

(看到 ImageMagick示例:蒙太奇,圖像陣列。)


226
2018-05-30 19:37



謝謝。附加工作正常,但我認為蒙太奇破壞了:如果沒有安裝ghostscript字體,它會拯救,即使你沒有註釋圖像。字體應按需加載,而不是提前加載。 - Bram
@Bram:我不知道並非常同意。你知道GraphicsMagick的行為是否相同? - peth
我如何跳過其他所有圖片?我想解析一個子集 - in-1,in-3,in-5等。 - Mike Robinson
@MikeRobinson convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpg 應該做的工作。 - gozzilli
@peth:你的答案以一個例子開頭 convert 有的命令 -append  之前 輸入文件名。一位匿名用戶添加了一個示例 +append  後 輸入文件名。這些都有效嗎?訂單是否重要? - Scott