如何链接两个 Imagemagick 命令
How to chain two Imagemagick Commands
我有两个依赖的 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
第二个命令将上面的输出和 "flattens it" 放到另一个图像上
convert marker.svg -page -1+2 cut_to_fit_circ.png \
-flatten facemarker.jpg
我应该得到一个 svg 图像,在 marker.svg
的顶部有一个圆形图像
试试看这是 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
如果这不起作用,那么 post 链接到您的 face.png 和 marker.svg 这样我就可以看到这些文件并使用它们进行测试。
还有为什么页面只有几个像素?
更正:
问题是 -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
根据需要调整页面偏移量
想通了。从展平切换到复合,只需要找到放置几何设置的正确位置。如果没有几何形状,圆形图像将放置在 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
上或多或少地找到了解决方案
我有两个依赖的 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
第二个命令将上面的输出和 "flattens it" 放到另一个图像上
convert marker.svg -page -1+2 cut_to_fit_circ.png \
-flatten facemarker.jpg
我应该得到一个 svg 图像,在 marker.svg
的顶部有一个圆形图像试试看这是 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
如果这不起作用,那么 post 链接到您的 face.png 和 marker.svg 这样我就可以看到这些文件并使用它们进行测试。
还有为什么页面只有几个像素?
更正:
问题是 -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
根据需要调整页面偏移量
想通了。从展平切换到复合,只需要找到放置几何设置的正确位置。如果没有几何形状,圆形图像将放置在 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
上或多或少地找到了解决方案