gpt4 book ai didi

qt - 如何减少使用 QImage 保存 png 所需的时间?

转载 作者:行者123 更新时间:2023-12-04 13:55:32 32 4
gpt4 key购买 nike

使用 Qt 4.8rc1,我有一个想要转换为 png 文件的 QImage。转换为 png 格式所需的时间似乎比应有的时间长:对于 800x800 的空 png,大约需要 70 毫秒。有什么方法可以使这更有效,还是我天生就受到 png/zlib 的限制?

这是我正在运行的基准测试:

#include <QtGui>
#include <QTimer>


int
main(int argc, char *argv[]) {
int times = 1000;
QString format("png");

QByteArray ba;
QBuffer* buffer = new QBuffer(&ba);
buffer->open(QIODevice::WriteOnly);

QTime timer;
timer.start();

while(times--) {
QImage image(800, 800, QImage::Format_RGB32);
image.save(buffer, format.toAscii(), -1);
}

int elapsed = timer.elapsed();

qDebug() << "Completed 1000 runs in" << elapsed << "ms. (" << (elapsed / 1000) << "ms / render )";
}

最佳答案

QImage::save(const QString & fileName, const char * format = 0, int quality = -1 )的第三个参数可能会帮助你。文档说明如下:

The quality factor must be in the range 0 to 100 or -1. Specify 0 to obtain small compressed files, 100 for large uncompressed files, and -1 (the default) to use the default settings.



如果你很幸运,那么通过改变质量的值,你可以改变 zlib 在尝试压缩图像数据上花费的时间。我会用各种质量值调用 QImage::save() 并查看执行时间是否发生变化。

尽管 Qt 文档说质量 must be in the range 0 to 100specify 0 to obtain small compressed files, 100 for large uncompressed files zlib manual显示不同的范围:
// Compression levels.
#define Z_NO_COMPRESSION 0
#define Z_BEST_SPEED 1
#define Z_BEST_COMPRESSION 9
#define Z_DEFAULT_COMPRESSION (-1)

尝试基于两个范围的值。

关于qt - 如何减少使用 QImage 保存 png 所需的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7948901/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com