如何在Python中渲染SVG图像到PNG文件?



所以我想从python代码中渲染SVG具有目标分辨率WxH(具有SVG文本作为str,就像我动态生成的那样):

<svg width="200" height="200" viewBox="0 0 220 220"
xmlns="http://www.w3.org/2000/svg">
<filter id="displacementFilter">
<feTurbulence type="turbulence" baseFrequency="0.05"
numOctaves="2" result="turbulence"/>
<feDisplacementMap in2="turbulence" in="SourceGraphic"
scale="50" xChannelSelector="R" yChannelSelector="G"/>
</filter>
<circle cx="100" cy="100" r="100"
style="filter: url(#displacementFilter)"/>
</svg>

转换为PNG图像。如何在Python中做这样的事情?

有多种解决方案可用于在python中将SVGS转换为PNGS,但并非所有解决方案都适用于您的特定用例,因为您正在使用SVG过滤器。

tbody> <<tr>
solution filter works? α频道? 直接从python调用?
cairosvg一些*
svglib没有没有
inkscape通过subprocess
魔杖

可以使用CairoSVG

CairoSVG在PyPI上可用,您可以使用pip安装它:

pip3 install cairosvg

在你的代码:

import cairosvg
width = 640
height = 480
cairosvg.svg2png(url='logo.svg', write_to='image.png', output_width=width, output_height=height)

最新更新