2011-09-24 49 views
3

我正尝试使用QImage从文本创建图像。使用QImage(qt)生成文本图像

按照这里的文档: http://doc.qt.io/qt-5/qimage.html#Format-enum

我们不能QImage的使用QImage::Format_Indexed8。 由于质量较差,我无法使用QImage::Format_MonoQImage::Format_MonoLSB

我的问题是:

  • 什么是创建文本图像(批量处理),所以 我们可以得到最小文件大小体面的质量最好的方法是什么?
  • 一旦图像被创建以减少文件大小,是否有任何方式通过QT进行图像压缩?

回答

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和te xt绘图例程在QtGUI中。所以,在Linux系统上,这将需要一个X服务器来运行:

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

+0

QtGui不需要X服务器。这取决于它是如何构建的。如果为Qt/X11构建是的,但不适用于Qt/E。 –

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,因此它将具有良好的压缩性能而不会丢失任何质量。