gpt4 book ai didi

image - 如何将缩放的 SVG 渲染为 QImage?

转载 作者:行者123 更新时间:2023-12-03 11:47:15 27 4
gpt4 key购买 nike

有一个QSvgRenderer类(class) QtSvg可以将图像渲染到 QPaintDevice 的模块.这个可以是QImage .在这种情况下,我们将创建:

Image svgBufferImage(renderer.defaultSize(), QImage::Format_ARGB32);

但是如何渲染到 QImage与 SVG 渲染器的默认大小不同?由于 SVG 格式的图像可以在不损失质量的情况下缩放,是否可以使用 QSvgRenderer 从 SVG 文件生成静态图像,例如 PNG ?

有没有人有更好的主意?基本上我需要从不同大小的 SVG 文件创建像 PNG 这样的图像。

最佳答案

只要给你的QImage所需的大小。 SVG 渲染器将缩放以适应整个图像。

#include <QApplication>
#include <QSvgRenderer>
#include <QPainter>
#include <QImage>

// In your .pro file:
// QT += svg

int main(int argc, char **argv)
{
// A QApplication instance is necessary if fonts are used in the SVG
QApplication app(argc, argv);

// Load your SVG
QSvgRenderer renderer(QString("./svg-logo-h.svg"));

// Prepare a QImage with desired characteritisc
QImage image(500, 200, QImage::Format_ARGB32);
image.fill(0xaaA08080); // partly transparent red-ish background

// Get QPainter that paints to the image
QPainter painter(&image);
renderer.render(&painter);

// Save, image format based on file extension
image.save("./svg-logo-h.png");
}

这将从传入的 SVG 文件创建一个 500x200 PNG 图像。

带有来自 SVG logos 的 SVG 图像的示例输出页:

enter image description here

关于image - 如何将缩放的 SVG 渲染为 QImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8551690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com