【问题标题】:Crop and merge 3 images in single ImageMagick or Convert command在单个 ImageMagick 或 Convert 命令中裁剪和合并 3 个图像
【发布时间】:2018-01-25 00:09:08
【问题描述】:

想从 picture.jpg 中裁剪 3 个区域并将这 3 个图像合并为一个。

是否可以在一个 imagemagick 或 convert 命令中裁剪和合并这 3 个图像? 如果在单个命令中不可能,如何将 3 个图像合并到单独的命令中?

我的目标是避免在单个命令中保存临时图像。

我使用以下命令获取每个区域。

convert picture.jpg -crop 212x32+717+190 -resize 318x48! out1.jpg
convert picture.jpg -crop 440x231+20+251 -resize 660x347! out2.jpg
convert picture.jpg -crop 440x231+490+251 -resize 660x347! out3.jpg
  • 我想要获得的输出图像大小为 1336x411 像素。
  • 每个裁剪图像在最终输出图像中的位置是:

    out1.jpg 位于 (x,y) = (509,0) out2.jpg 位于 (x,y) = (0,64) out3.jpg 位于 (x,y) = (676,64)

图片.jpg

输出.jpg

【问题讨论】:

    标签: merge imagemagick crop imagemagick-convert


    【解决方案1】:

    使用 IM 的“转换”,您可以读取原始图像,然后在括号内多次“克隆”它以处理输入图像的副本。在括号内,您可以按照您想要的方式“-crop”每个副本,并“-repage”它们,以便每个包含完成的画布大小和位置信息。之后,您可以“-delete”原始输入,将剩余的三个图像“-flatten”到单个画布上,然后写入输出。

    该命令在 Windows 命令提示符下将如下所示。

    convert input.jpg ^
       ( -clone 0 -crop 212x32+717+190 -resize 318x48! -repage 1336x411+509+0 ) ^
       ( -clone 0 -crop 440x231+20+251 -resize 660x347! -repage 1336x411+0+64 ) ^
       ( -clone 0 -crop 440x231+490+251 -resize 660x347! -repage 1336x411+676+64 ) ^
       -delete 0 -flatten output.png
    

    如果您在 *nix 系统上运行,您需要用反斜杠“\”替换那些连续的插入符号“^”,并用反斜杠“\( ... \)”转义括号。

    【讨论】:

    • 优秀的吉马克!!!它工作得非常完美。我看到 ImageMagick 是如此强大。非常感谢。
    • @GeeMack 任何想法如何-clone 在 Node 子进程中?喜欢spawn('convert', [tempLocalFile, ...do cloning..., tempLocalFile])
    • @Igniter - 我不知道该怎么做。您最好将其作为一个新问题发布,以便具有更多专业知识的人可以为您提供更好的答复。
    猜你喜欢
    • 2019-03-14
    • 2019-04-19
    • 1970-01-01
    • 2021-08-07
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    相关资源
    最近更新 更多