Генерация текстовых изображений с использованием QImage (qt) - PullRequest
3 голосов
/ 24 сентября 2011

Я пытаюсь создать изображения из текста, используя QImage.

Согласно документации здесь: http://doc.qt.io/qt-5/qimage.html#Format-enum

Мы не можем использовать QImage::Format_Indexed8 с QImage.Я не могу использовать QImage::Format_Mono или QImage::Format_MonoLSB из-за его низкого качества.

Мой вопрос:

  • Как лучше всего создать текстовое изображение (пакетная обработка),мы можем получить приличное качество с минимальным размером файла?
  • Есть ли какой-нибудь способ сделать сжатие изображения через QT после создания изображения, чтобы уменьшить размер файла?

Ответы [ 2 ]

5 голосов
/ 27 октября 2015

Вот пример кода, который делает это:

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 голос
/ 24 сентября 2011

Вот этот пример, который показывает вам, как использовать 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

...