📜  PyCairo – 将 SVG 图像文件保存为 PNG 文件

📅  最后修改于: 2022-05-13 01:54:50.299000             🧑  作者: Mango

PyCairo – 将 SVG 图像文件保存为 PNG 文件

在本文中,我们将看到如何在Python中使用 PyCairo 将 SVG 文件保存为 PNG 文件。我们可以使用 SVGSurface 方法创建一个 SVG 文件。 SVG文件是使用万维网联盟 (W3C) 创建的二维矢量图形格式的图形文件。它使用基于 XML 的文本格式描述图像。 SVG 文件是作为在 Web 上显示矢量图形的标准格式而开发的。

PNG:便携式网络图形是一种支持无损数据压缩的光栅图形文件格式。 PNG 是作为图形交换格式的改进的、非专利的替代品而开发的。 PNG 支持基于调色板的图像、灰度图像和全彩色非基于调色板的 RGB 或 RGBA 图像。

PyCairo : Pycairo 是一个Python模块,为 cairo 图形库提供绑定。这个库用于在Python中创建 SVG 即矢量文件。打开 SVG 文件以查看它(只读)的最简单快捷的方法是使用现代网络浏览器,如 Chrome、Firefox、Edge 或 Internet Explorer——几乎所有这些都应该为 SVG 格式提供某种渲染支持.

下面是实现。

Python3
# importing pycairo
import cairo
  
# creating a SVG surface
# here geek is file name & 700, 700 is dimension
with cairo.SVGSurface("geek.svg", 700, 700) as surface:
  
    # creating a cairo context object
    context = cairo.Context(surface)
  
    # creating a rectangle(square) for left eye
    context.rectangle(100, 100, 100, 100)
  
    # creating a rectangle(square) for right eye
    context.rectangle(500, 100, 100, 100)
  
    # creating position for the curves
    x, y, x1, y1 = 0.1, 0.5, 0.4, 0.9
    x2, y2, x3, y3 = 0.4, 0.1, 0.9, 0.6
  
    # setting scale of the context
    context.scale(700, 700)
  
    # setting line width of the context
    context.set_line_width(0.04)
  
    # move the context to x,y position
    context.move_to(x, y)
  
    # draw the curve for smile
    context.curve_to(x1, y1, x2, y2, x3, y3)
  
    # setting color of the context
    context.set_source_rgba(0.4, 1, 0.4, 1)
  
    # stroke out the color and width property
    context.stroke()
  
    # Save as a SVG and PNG
    surface.write_to_png('geek.png')
  
  
# printing message when file is saved
print("File Saved")


输出 :