如何在ImageMagick中的多重裁剪过程中使用第一个图像序列

时间:2015-01-23 00:50:37

标签: imagemagick

我想要调整大小,裁剪并连接很多图像。 我不想将中间结果写入磁盘,只是最终结果。

我的脚本是:

montage -mode concatenate \
\( test.jpg -thumbnail "150x100>" -background white -gravity center -extent 150x100 -page 150x100+0+0 \) \
\( -clone 0 -crop 23x16+80+0  -background white -extent 23x16 \)  \
\( -clone 0 -crop 23x16+16+87 -background white -extent 23x16 \) \
...
-delete 0 -quality 100% thumb.jpg

我总是遇到以下错误:

montage.im6: geometry does not contain image `test.jpg' @ warning/transform.c/CropImage/574.

我尝试使用" repage"和"页面"参数,但我没有成功。

有什么想法吗?

更新

马克问了一些例子。因此,我尝试在一个步骤中写下我想要合并的不同步骤:

convert logo: test.jpg

convert test.jpg -thumbnail "150x100>" -background white -gravity center -extent 150x100 -page 150x100+0+0 test.resized.jpg

montage -mode concatenate test.resized.jpg \
    \( -clone 0 -crop 23x16+80+20  -background white -extent 23x16 \) \
    \( -clone 0 -crop 23x16+92+74 -background white -extent 23x16 \) \
    \( -clone 0 -crop 23x16+100+80 -background white -extent 23x16 \) \
    -delete 0 -quality 100% result.thumb.jpg

结果如下: you can see here the expected result

http://phspring.nl/stackoverflow28101334.jpg

1 个答案:

答案 0 :(得分:1)

我必须承认这一个让我神秘化!我无法让你的工作如何尝试,或者我想要怎么做。我发现只有添加+repage才能使其正常工作,但如果我这样做,忘记 -extent,那么我最终会得到2个命令。我还发现+clone拒绝代替-clone 0这个例子,这也让我感到困惑。

我能使其工作的唯一方法是避免中间文件将第一个convert的输出流式传输到第二个。

convert logo: -resize "150x100>" -background white -gravity center -extent 150x100 JPG:- | \
    convert JPG:- \
       \( -clone 0 -crop 23x16+80+20  \) \
       \( -clone 0 -crop 23x16+92+74  \) \
       \( -clone 0 -crop 23x16+100+80 \) \
       -delete 0 +append out.jpg