python cairosvg 库专题博客,10分钟掌握 cairosvg
【摘要】 cairosvg 库用于将 SVG 图像转换为其他图片格式。它使用 Cairo 库来绘制 SVG 图像,并支持将 SVG 图像转换为 PNG、PDF、PS、SVG 和 GIF 格式。 Python cairosvg 上手案例由于该库是图片转格式的第三方库,所以我们可以直接进行上手学习,提前准备一张 svg 图片。如果没有,可以查看《Python 生成 svg 图片,一篇博客带你掌握 Pyth...
cairosvg 库用于将 SVG 图像转换为其他图片格式。它使用 Cairo 库来绘制 SVG 图像,并支持将 SVG 图像转换为 PNG、PDF、PS、SVG 和 GIF 格式。
Python cairosvg 上手案例
由于该库是图片转格式的第三方库,所以我们可以直接进行上手学习,提前准备一张 svg 图片。
如果没有,可以查看《Python 生成 svg 图片,一篇博客带你掌握 Python 与 svg 之间的操作》 进行生成。
import cairosvg
cairosvg.svg2png(url='random_numbers.svg', write_to='random_numbers.png')
可以看到该库直接使用 svg2png
即可将图片进行转换。
cairosvg 直接将 svg 图像转换为二进制数据
在实战项目中,很多时候我们需要将动态生成的 svg 图片直接以 png 格式进行输出,这时就用到了下述代码。
import cairosvg
with open('random_numbers.svg', 'rb') as f:
svg_data = f.read()
png_data = cairosvg.svg2png(bytestring=svg_data)
with open('ca.png', 'wb') as f:
f.write(png_data)
生成的图片相较于矢量 svg 来说,会有轻微失真。
cairosvg 库函数清单
svg2png(url=None, bytestring=None, write_to=None, dpi=96, parent_width=None, parent_height=None, scale=None, **kwargs)
:将 SVG 图像转换为 PNG 格式。svg2pdf(url=None, bytestring=None, write_to=None, dpi=96, parent_width=None, parent_height=None, scale=None, **kwargs)
:将 SVG 图像转换为 PDF 格式。svg2ps(url=None, bytestring=None, write_to=None, dpi=96, parent_width=None, parent_height=None, scale=None, **kwargs)
:将 SVG 图像转换为 PS 格式。svg2svg(url=None, bytestring=None, write_to=None, dpi=96, parent_width=None, parent_height=None, scale=None, **kwargs)
:将 SVG 图像转换为 SVG 格式。svg2gif(url=None, bytestring=None, write_to=None, dpi=96, parent_width=None, parent_height=None, scale=None, **kwargs)
:将 SVG 图像转换为 GIF 格式。
可以看到仅函数名称不同,参数一致。
其中要求 url
和 bytestring
两个参数至少需要提供一个,write_to
参数用于指定输出文件的路径。
除此之外,cairosvg 库还有一些其他函数用于控制输出图像的样式和效果。
dpi
: 用于设置图像的 DPI,默认为 96;parent_width, parent_height
: 用于设置输出图像的宽和高;scale
: 用于设置图像的缩放比例;kwargs
: 可以传递给 cairo 库的其他参数,例如设置线条宽度,颜色等;
png_data = cairosvg.svg2png(bytestring=svg_data, dpi=200, parent_width=200, parent_height=20,
default_font='Arial')
总结
除了在 Python 程序中进行控制外,cairosvg 还支持使用命令行来转换 SVG 图像。命令行支持所有上述参数,可以使用 --help
参数来查看详细用法。
官方网址:cairosvg。
📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 835 篇原创博客
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)