【问题标题】:Convert jpeg image to thumbnail image in Qt在Qt中将jpeg图像转换为缩略图图像
【发布时间】:2018-09-14 04:27:52
【问题描述】:

QImage 最终需要在QLabel 中显示为缩略图。在两者之间,它在QByteArray 中序列化并通过网络发送。那么,我们可以将QImage 转换为QByteArray 以获取缩略图吗?基本上我想避免QImage::scale() 方法,因为它非常消耗CPU。 就像 QImage 转换为 QByteArray 一样,它将保存缩略图图像的数据。

【问题讨论】:

  • QImage 的内容存储在与缩放有关的QByteArray 中有什么帮助?为什么要避开QImage::scale()?当然,它可能会消耗 CPU,尽管这在很大程度上取决于图像大小。请考虑QImage::scaled() 的默认transformModeQt::FastTransformation,这可能很难被击败。

标签: qt qimage qpixmap qbytearray qicon


【解决方案1】:

在这种情况下,您无法避免 QImage::scale。你为什么想要? 这是如何将 QImage 保存到 QByteArray 的问题的答案。

        QFile file(imagePath);
        if (file.open(QIODevice::ReadOnly)) {
            QByteArray bytes;
            QImage img;
            img = img.fromData(file.readAll());
            img = img.scaled(200, 100, Qt::IgnoreAspectRatio, Qt::FastTransformation);
            SetLabelImage(img);
            QBuffer buffer(&bytes);
            img.save(&buffer, "PNG");
        }

【讨论】:

  • 是的...有没有办法在 QByteArray 的 Qbuffer 中进行缩放,而不是使用 QImage 进行缩放?
  • 为什么?您似乎认为这会提供一些性能优势,但您没有说明原因。有问题的图片有多大?
  • 图像大小在 500kb 左右并不多,但是有很多图像..比如 10K+ ,所以主要关注 image.scale(x,y) 的处理和减慢过程。
猜你喜欢
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多