使用Qt 4.8rc1,我有一个我要转换为png文件的Q
Image.似乎转换为png格式需要更长的时间:800×800空png需要~70ms.有没有办法让我更有效率,或者我本身就受到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 doc说质量必须在0到100的范围内,并且指定0以获得小的压缩文件,对于大的未压缩文件,指定为100,zlib manual显示不同的范围:
// Compression levels.
#define Z_NO_COMPRESSION 0
#define Z_BEST_SPEED 1
#define Z_BEST_COMPRESSION 9
#define Z_DEFAULT_COMPRESSION (-1)
尝试基于两个范围的值.