【问题标题】:Will ImageMagick SVG to PNG conversion respect blend modes?ImageMagick SVG 到 PNG 的转换会尊重混合模式吗?
【发布时间】: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

【问题讨论】:

    标签: svg imagemagick png mix-blend-mode


    【解决方案1】:

    看起来 ImageMagick 正在使用其内部 MVG 解码器。确保delegates.xml 文件包含svg:decode 的inkscape 指令,并且这样的命令按预期工作。

    类似:

    <delegate decode="svg:decode" stealth="True" command="&quot;inkscape&quot; &quot;%s&quot; --export-file=&quot;%s&quot; --export-dpi=&quot;%s&quot; --export-background=&quot;%s&quot; --export-background-opacity=&quot;%s&quot; &gt; &quot;%s&quot; 2&gt;&amp;1"/>
    

    您可以通过-verbose 选项验证正在使用正确的命令。

    magick -verbose test.svg IMagick.png
    

    【讨论】:

    • emcconville...谢谢!在 IMagick 代表文件中,我找到了您提到的那一行。它被设置为使用“rsvg-convert”,但下面有一行来调用 InkScape(已注释掉)。我将尝试放弃“rsvg-convert”行以支持 InkScape 代表。但是,由于这个项目只是为这件事调用 IMagick,我可能应该继续直接调用 InkScape。不过谢谢你的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2012-04-08
    • 2015-11-18
    相关资源
    最近更新 更多