ImageMagick SVG 到 PNG 的转换会尊重混合模式吗?
Posted
技术标签:
【中文标题】ImageMagick SVG 到 PNG 的转换会尊重混合模式吗?【英文标题】:Will ImageMagick SVG to PNG conversion respect blend modes? 【发布时间】:2021-05-08 03:34:36 【问题描述】:ImageMagick 是否能够处理 SVG 混合模式?例如,将 SVG 转换为 PNG 时?
使用 ImageMagick-7.0.8-Q16、Inkscape 0.92.1 r15371
我有一个简单的 SVG,它有两个矩形,红色和蓝色,蓝色的“排除”混合模式。它在我尝试过的任何浏览器上都按预期显示(参见 MS Edge 截图)
Inkscape 会正确地将 SVG 图像转换为 PNG,尊重混合混合模式样式。但是,ImageMagick 没有(参见 results.png)。 ImageMagick 似乎只使用“正常”混合混合模式(FWIW,IMDisplay 显示相同的错误图像,混合模式被忽略)
我需要更改一些选项吗?或者,如果 ImageMagick 只是不处理 SVG 混合模式,是否有计划让它在未来这样做?
我的命令行如下:
inkscape test.svg -e Inkscape.png
magick test.svg IMagick.png
SVG 文件仅包含:
<svg width='300' height='300' xmlns = 'http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'>
<rect width='100%' height='100%' fill='#dddddd'/>
<rect x='50' y='50' width='150' height='150' style='fill:red;' />
<rect x='100' y='100' width='150' height='150'
style='fill:blue;mix-blend-mode:exclusion' />
</svg
【问题讨论】:
【参考方案1】:看起来 ImageMagick 正在使用其内部 MVG 解码器。确保delegates.xml
文件包含svg:decode
的inkscape 指令,并且这样的命令按预期工作。
类似:
<delegate decode="svg:decode" stealth="True" command=""inkscape" "%s" --export-file="%s" --export-dpi="%s" --export-background="%s" --export-background-opacity="%s" > "%s" 2>&1"/>
您可以通过-verbose
选项验证正在使用正确的命令。
magick -verbose test.svg IMagick.png
【讨论】:
emcconville...谢谢!在 IMagick 代表文件中,我找到了您提到的那一行。它被设置为使用“rsvg-convert”,但下面有一行来调用 InkScape(已注释掉)。我将尝试放弃“rsvg-convert”行以支持 InkScape 代表。但是,由于这个项目只是为这件事调用 IMagick,我可能应该继续直接调用 InkScape。不过谢谢你的回答!以上是关于ImageMagick SVG 到 PNG 的转换会尊重混合模式吗?的主要内容,如果未能解决你的问题,请参考以下文章
在没有 ImageMagick 的情况下从 SVG XML 创建 PNG
边距在 PDF 中消失 -> 使用 ImageMagick 进行 PNG 转换