【问题标题】:Generating textual images using QImage (qt)使用 QImage (qt) 生成文本图像
【发布时间】:2011-09-24 10:32:04
【问题描述】:

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

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

我们不能将QImage::Format_Indexed8 与 QImage 一起使用。 我不能使用QImage::Format_MonoQImage::Format_MonoLSB,因为它的质量很差。

我的问题是:

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

【问题讨论】:

    标签: c++ qt qimage


    【解决方案1】:

    这是一个示例代码:

    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");
    

    它创建了这个图像:

    输出格式为PNG,因此压缩效果不错,不会损失任何质量。

    【讨论】:

      【解决方案2】:

      有这个例子,它向你展示了如何使用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

      【讨论】:

      • QtGui 不需要 X 服务器。这取决于它是如何建造的。如果是为 Qt/X11 构建的,是的,但不是为 Qt/E 构建的。
      猜你喜欢
      • 2020-11-12
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 2014-04-12
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      相关资源
      最近更新 更多