使用QImage(qt)生成文本图像

时间:2011-09-24 10:32:05

标签: c++ qt qimage

我正在尝试使用QImage从文本创建图像。

根据此处的文档: http://doc.qt.io/qt-5/qimage.html#Format-enum

我们不能将QImage::Format_Indexed8与QImage一起使用。 由于质量低,我无法使用QImage::Format_MonoQImage::Format_MonoLSB

我的问题是:

  • 创建文本图像(批处理)的最佳方法是什么 我们可以用最小的文件大小获得不错的质量?
  • 创建图像后,有没有办法通过QT进行图像压缩以减小文件大小?

2 个答案:

答案 0 :(得分:5)

以下是执行此操作的示例代码:

QImage image(100, 50, QImage::Format_ARGB32_Premultiplied);
QPainter painter(&image);
painter.fillRect(image.rect(), Qt::yellow);
painter.drawText(image.rect(), Qt::AlignCenter | Qt::AlignVCenter, "hello, world");
image.save("output.png");

它会创建此图像:

enter image description here

输出格式为PNG,因此它具有良好的压缩效果而不会失去任何质量。

答案 1 :(得分:1)

这个例子展示了如何使用QPainter::drawText并使用字体:

http://doc.qt.io/archives/qt-4.7/painting-fontsampler.html

QImage::save支持各种格式和质量级别:

http://doc.qt.io/archives/qt-4.7/qimage.html#reading-and-writing-image-files

虽然QImage在QtCore中,QPainter和文本绘制例程在QtGUI中。因此,在Linux系统上,这将需要运行X服务器:

http://www.qtcentre.org/threads/1758-QPainter-in-console-apps