In this article, we will see how we can save an SVG file to a PNG file using PyCairo in Python. We can create an SVG file using SVGSurface method. An SVG file is a graphics file that uses a two-dimensional vector graphic format created by the World Wide Web Consortium (W3C). It describes images using a text format that is based on XML. SVG files are developed as a standard format for displaying vector graphics on the web.
PNG : Portable Network Graphics is a raster-graphics file format that supports lossless data compression. PNG was developed as an improved, non-patented replacement for Graphics Interchange Format. PNG supports palette-based images, grayscale images, and full-color non-palette-based RGB or RGBA images.
PyCairo : Pycairo is a Python module providing bindings for the cairo graphics library. This library is used for creating SVG i.e vector files in python. The easiest and quickest way to open an SVG file to view it (read-only) is with a modern web browser like Chrome, Firefox, Edge, or Internet Explorer—nearly all of them should provide some sort of rendering support for the SVG format.
In order to this we will use write_to_png method with the SVGSurface object
Syntax : surface.write_to_png(‘Lazyroar.png’)
Argument : File name to be saved
Return : It returns None
Below is the implementation.
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" ) |
Output :