使用Qt 4.8rc1,我有一个QImage,我想转换为PNG文件。它似乎需要更长的时间才能转换为PNG格式:800x800空png需要70毫秒。有没有办法让这个效率更高,还是我本身受png/zlib的限制?如何减少使用QImage保存png所花费的时间?
这里是我运行基准测试:
#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)";
}
谢谢,这指出我在正确的方向。压缩级别有所帮助,但影响最大的是将PNG滤镜设置为无。 ('png_set_filter(png_ptr,PNG_FILTER_TYPE_BASE,PNG_FILTER_NONE);')不幸的是,这是不能通过QImage修改,它看起来像我必须创建我自己的QImageWriter。 –
不客气。 QPNGImageWriter('https:// qt.gitorious.org/qt/qt/blobs/4.7/src/gui/image/qpnghandler.cpp#line695')似乎没有调用png_set_filter()。这是不是意味着PNG过滤器没有? – Bill
我无法从文档中找出来,但是从我的测试中明确将其设置为none时,速度要快3-4倍,所以它必须默认使用其他过滤器之一。 –