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

Gur*_*ngh 4 c++ qt qimage

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

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

我们不能使用QImage::Format_Indexed8QImage.我不能使用QImage::Format_MonoQImage::Format_MonoLSB由于其低质量.

我的问题是:

  • 创建文本图像(批处理)的最佳方法是什么,这样我们才能以最小的文件大小获得不错的质量?
  • 一旦创建图像以减小文件大小,是否有任何方法可以通过QT进行图像压缩?

sas*_*alm 6

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

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");
Run Code Online (Sandbox Code Playgroud)

它创建了这个图像:

在此输入图像描述

输出格式为PNG,因此它具有良好的压缩性能而不会丢失任何质量.


Hos*_*ork 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