【问题标题】:How to chain two Imagemagick Commands如何链接两个 Imagemagick 命令
【发布时间】:2019-07-08 10:11:48
【问题描述】:

我有两个依赖的 imagemagick 命令,它们各自运行良好,但是在尝试了所有可以想象的调用之后,我无法将它们组合在一起工作。如果有人能指出正确的方向,我将不胜感激。

我已经尝试了多种方法来结合使用在线资源作为指导这两者,但像往常一样,我找不到适合我需要的确切示例。我在 IM6* 上运行(我的服务器也在 IM6* 上)

第一个命令获取图像的中心裁剪缩略图,然后将其制作成圆形图像。

convert -define jpeg:size=200x200 face.png \
-thumbnail 31x31^ -gravity center -extent 31x31 \
\( +clone -threshold -1 -negate -fill white -draw 'circle 15,12 12,0' \) \
-alpha off -compose copy_opacity -composite cut_to_fit_circ.png


第二个命令采用上述输出并将其“展平”到另一个图像上

convert marker.svg -page -1+2 cut_to_fit_circ.png \
-flatten facemarker.jpg

我应该最终得到一个 svg 图像,在 marker.svg 的顶部有一个圆形图像

【问题讨论】:

    标签: imagemagick imagemagick-convert


    【解决方案1】:

    试试这是 ImageMagick 6。

    convert marker.svg -page -1+2 \
    \( -define jpeg:size=200x200 face.png \
    -thumbnail 31x31^ -gravity center -extent 31x31 \
    \( +clone -threshold -1 -negate -fill white -draw 'circle 15,12 12,0' \) \
    -alpha off -compose copy_opacity -composite \) \
    -flatten facemarker.jpg
    


    如果这不起作用,则发布指向您的 face.png 和 marker.svg 的链接,以便我可以查看这些文件并使用它们进行测试。

    还有为什么 -page 只有几个像素?

    更正:

    问题是-compose copy_opacity 流向了-flatten。因此,您必须在展平之前重置为 -compose over。更正的命令将是。

    convert -background none marker.svg \
    \( -page +0+0 -define jpeg:size=200x200 face.png \
    -thumbnail 31x31^ -gravity center -extent 31x31 \
    \( +clone -threshold -1 -negate -fill white -draw 'circle 15,12 12,0' \) \
    -alpha off -compose copy_opacity -composite \) \
    -compose over -flatten facemarker.png
    


    根据需要调整 -page 偏移量

    【讨论】:

    • 这是我试过的,它只是呈现一个marker.svg大小的白色矩形:(这里是两个图像文件的链接:drive.google.com/open?id=1NIi7WDuko7aQ-htSNESjKL4ErCi9rtHv (face.png) drive.google.com/open?id=1MxxgpbuET18ghqYwNglSkXUAXELmxaPB (marker .svg)。第二个脚本(带有 -page)是我从 IM 文档中复制和修改的脚本 - 在地图上放置图钉。
    • 在上面的回答中查看我的更正。问题是 -compose copy_opacity 流向 -flatten。所以你必须在展平之前重置为 -compose over
    • 近乎辉煌!!当我运行该命令时,圆形图像就在右侧并与顶部对齐。我可以看到我们丢失了将圆形图像正确放置在标记上的“-page -1+2”。我该如何做到这一点? drive.google.com/open?id=1yLWdIMD1xhxWAiYtUrMZvqu3akhy2PpF
    • 将 -page -1+2 放在 -define ... 之前的第一个括号内,然后根据需要进行调整。抱歉,我测试的时候忘记放回去了。我已经修改了我的更正。见上文。
    • 太棒了!!非常感谢,很荣幸能得到你的帮助,Fred。
    【解决方案2】:

    想通了。从展平转换为合成,只需找到放置几何设置的正确位置。如果没有几何图形,圆形图像将放置在 marker.png (svg) 的中心,因此我必须应用不同的设置以使其正确定位:

    convert marker.png \( -define jpeg:size=200x200 face.png \
     -thumbnail 31x31^ -gravity center -extent 31x31 \( +clone \
     -threshold -1 -negate -fill white -draw 'circle 15,12 12,0' \) \
     -alpha off -compose copy_opacity -composite \) -geometry +0-7 \
     -compose over -composite facemarker.png
    
    

    push pins on a map forum question 上或多或少找到了解决方案!

    【讨论】:

    • -page 如果你把它放在我上面提到的第一个括号内,它对我有用。同样为了保持透明度,在阅读 svg 文件之前放置 -background none。不知道您为什么将输入为 svg 更改为输入为 png?
    • 我正在为 AppInventor 开发一个可能的解决方案(我是论坛上的“帮助者”) - 地图标记默认为 svg,但其他图像组件不会显示 svg,这就是为什么我有一直在切换。 - 您的解决方案已在论坛上获得赞誉:)
    • 仅供参考。 Imagemagick 可以使用 3 种 SVG 渲染器之一来提高质量/可靠性:1) Imagemagick 的内部 MSVG/XML 渲染,2) RSVG 委托和 3) Inkscape。为了获得最佳质量/可靠性,安装 Inkscape 和 Imagemagick 将在其他 2 上使用它。
    • AppInventor 可以使用 Imagemagick 吗?在我刚刚在 Google 上搜索之前,我对 AppInventor 一无所知。只是好奇。如果你愿意,你可以离线给我发电子邮件。我的电子邮件地址在我的 Imagemagick 脚本网站的个人资料中。
    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    相关资源
    最近更新 更多