使用SVG
,您可以定义剪切路径,然后在绘制路径时应用它。使用ImageMagick
命令行选项可以达到同样的效果吗?
我能够做到的唯一方法是将剪切路径创建为单独的文件,并使用-clip-mask
来应用它。这是一个有效的例子:
convert -size 150x150 xc:none -draw "path 'M50,50 h50 v50 -h-50 z'" clip.png
convert -size 150x150 xc: -fill 'blue' -clip-mask clip.png \
-draw "path 'h150,0 l-75,75 z" image.png
我想要做的是在与绘图相同的命令中定义剪辑路径,理想情况是像这样的一些:
convert -size 150x150 xc: -fill 'blue' \
-clip-path "path 'M50,50 h50 v50 -h-50 z'" \
-draw "path 'h150,0 l-75,75 z" image.png
哪个不起作用。为了避免使用中间文件,我尝试使用堆叠图像,但这似乎不作为参数(以下也不起作用):
convert -size 150x150 xc: -fill 'blue' \
-clip-mask \( -size 150x150 xc:none -draw "path 'M50,50 h50 v50 -h-50 z'" \) \
-draw "path 'h150,0 l-75,75 z" image.png
这可以用SVG简洁地完成 - ImageMagick
命令行能做到吗?
答案 0 :(得分:0)
您可以使用mpr
伪格式创建中间文件,如下所示:
convert \( -size 150x150 xc:none -draw "path 'M50,50 h50 v50 -h-50 z'" \
-write mpr:clip \) +delete \
-size 150x150 xc: -fill 'blue' -clip-mask mpr:clip \
-draw "path 'h150,0 l-75,75 z" image.png
这使用-write
使剪辑图像立即被写入(否则它将堆叠直到命令序列结束)。然后使用+delete
将其从堆栈中删除(否则它也将在命令序列的末尾写入)。然后-clip-mask
读取伪文件。
伪文件mpr
是 Magick Persistent Registry ,并记录在案here。