2011-09-24 256 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,因此它將具有良好的壓縮性能而不會丟失任何質量。