将文本转换为图像(例如PNG或JPEG)

时间:2019-07-28 16:06:02

标签: qt qt5

在不使用“ QApplication app(argc,argv);”将静态文本写入图像文件时,我需要帮助。在main()中。我的QT版本是5.12.2。

目前,我可以使用以下代码执行此操作:

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QCoreApplication::addLibraryPath("./plugins");
QString imagePath(QStringLiteral("./images/output/testOutput1.png"));
QImage image(500, 400, QImage::Format_RGB888);

image.fill(Qt::red);

QPainter painter;

if (!painter.begin(&image))
    return;

painter.setPen(QPen(Qt::black));
painter.setFont(QFont("Times", 12, QFont::Bold));
painter.drawText(image.rect(), Qt::AlignCenter, "writing text on image");
painter.end();

image.save(imagePath);

return 0;
}

我正在尝试不使用“ QApplication app(argc,argv);”的类似类型的解决方案。在我的代码中。

当前,如果我删除了“ QApplication app(argc,argv);”的减速度,我的代码在“ painter.drawText(...);”处崩溃。

1 个答案:

答案 0 :(得分:1)

您最能做的就是将QApplication换成QGuiApplication(从而避免了QtWidgets模块的无用依赖)。

Qt在QCoreApplication(对于QtCore的东西)/ QGuiApplication(对于QtGui的东西)/ QApplication(对于QtWidgets的东西)的肠道内初始化其大部分静态/全局东西;每个元素都是彼此衍生的,因此,如果您拥有QApplication,那么您已经拥有Gui和Core的所有内容。

字体引擎(以及其他与绘画有关的东西)在QGuiApplication构造函数as hinted in QFont documentation内初始化

  

请注意,QGuiApplication实例必须存在,才能使用QFont

因此,您不进行实例化(或从其派生的类)就不会绘制。