对于矢量图形格式svg,最近需要一个转换到其它图像格式的需求。打算用python实现。
网上看了不少资料,大多的解决方案是用 GTK+ (cairo),inkscrape,等系统tools-kit来转.非常的麻烦。
庆幸自已相信有更方便的办法,继续寻找与尝试着。最后发现python有纯py的库就能完成这类功能。那就是svglib。
首先 pip install svglib
然后数行代码就能搞定,非常棒。记录与分享于此。py2 py3 都能兼容import svglib
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPDF, renderPM
drawing = svg2rlg("drawing.svg")
renderPDF.drawToFile(drawing, "drawing.pdf")
renderPM.drawToFile(drawing, "fdrawing.png", fmt="PNG")
renderPM.drawToFile(drawing, "drawing.jpg", fmt="JPG")
#改一下svg源文件路径,直接运行测试一下就可以了。
另附一个svg文件(代码),可用来测试。粘贴到空白文本文件存成.svg文件即可。<?xml version="1.0" standalone="no"?>
ttp://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
xmlns="http://www.w3.org/2000/svg" version="1.1">
Example arcs01 - arc commands in path dataPicture of a pie chart with two pie wedges and a picture of a line with arc blips
fill="none" stroke="red" stroke-width="5" />