Qt 4.8rc1을 사용하면 png 파일로 변환하려는 QImage가 있습니다. 그것은 그것이 png 형식으로 변환 해야하는 것보다 오래 걸리는 것 같습니다 : ~ 70ms 800x800 빈 png에 대한. 이 방법을 더 효율적으로 만들 수있는 방법이 있습니까, 아니면 png/zlib에 의해 본질적으로 제한됩니까? QImage::save(const QString & fileName, const char * format = 0, int quality = -1)의 세 번째 인수 당신을 도울 수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-4x). 따라서 다른 필터 중 하나를 기본값으로 사용해야합니다. –