python cairosvg 库专题博客,10分钟掌握 cairosvg

举报
梦想橡皮擦 发表于 2023/05/26 17:56:31 2023/05/26
【摘要】 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 格式。

可以看到仅函数名称不同,参数一致。

其中要求 urlbytestring 两个参数至少需要提供一个,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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。