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(‘geeks.png’)
Argument : File name to be saved
Return : It returns None
Below is the implementation.
# 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 :