There is a QSvgRenderer
class in QtSvg
module which can render image onto QPaintDevice
. This one can be QImage
. In that case we will create:
Image svgBufferImage(renderer.defaultSize(), QImage::Format_ARGB32);
But how to render to a QImage
of different size than default from the SVG renderer? Since the SVG format image can be scaled without quality loss, is it possible to generate static images, like PNG, from SVG files using QSvgRenderer
?
Does anyone have a better idea? Basically I need to create images like PNG from SVG files in different sizes.
Here is complete answer:
If the pixmap has 1-bit depth, the returned image will also be 1 bit deep. Images with more bits will be returned in a format closely represents the underlying system. Usually this will be QImage::Format_ARGB32_Premultiplied for pixmaps with an alpha and QImage::Format_RGB32 or QImage::Format_RGB16 for pixmaps without alpha.
Also copy from above answer
Just give your
QImage
the desired size. The SVG renderer will scale to fit the whole image.This will create an 500x200 PNG image from the passed in SVG file.
Example output with an SVG image from the SVG logos page: