【问题标题】:Decrease file size of QPixmap减小 QPixmap 的文件大小
【发布时间】:2011-12-27 00:34:12
【问题描述】:

当我使用 scaledToHeight 调整 QPixmap 的大小然后将其转换为 QByteArray 时,此 ByteArray 的大小与未缩放的 QPixmap 的 ByteArray 大小完全相同。 QPixmap 有可能缩小像素大小和文件大小吗?

最好的问候

【问题讨论】:

  • 你能发布一些代码吗?我已经多次缩放QPixmap,结果字节数组肯定更小。

标签: c++ qt qpixmap qbytearray


【解决方案1】:

这是一个概念验证,表明您正在做的事情肯定是可能的。也许你可以看到你在做什么不同?

#include <QtGui>

int main(int argc, char **argv) {
  QApplication app(argc, argv);

  QPixmap pixmap("/path/to/image.jpg");
  QByteArray bytes1;
  QBuffer buffer1(&bytes1);
  buffer1.open(QIODevice::WriteOnly);
  pixmap.save(&buffer1, "png");
  qDebug() << bytes1.size();

  pixmap = pixmap.scaledToHeight(100);
  QByteArray bytes2;
  QBuffer buffer2(&bytes2);
  buffer2.open(QIODevice::WriteOnly);
  pixmap.save(&buffer2, "png");
  qDebug() << bytes2.size();

  return app.exec();
}

两种猜测:

  • scaledToHeight 返回原始图像的缩放副本。它不会直接缩放像素图实例。
  • 如果您重复使用相同的QByteArray,您可能需要在看到大小差异之前截断它。也就是说,即使 实际内容 小得多,QByteArray 的 容量 也可能会保持较大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-18
    • 2010-10-08
    • 2012-05-10
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多