У меня была проблема, подобная описанной выше, мой код выглядел так:
QBuffer buffer;
buffer.open(QIOdevice::WriteOnly);
QDataStream stream(&buffer);
stream << image;
Используя QElapsedTimer, я обнаружил, что кодирование изображения занимает более 500 мс для изображения размером 1024x768.Используя valgrind, я обнаружил, что время было потрачено на png_write_image , который вызывался из QImageWriter :: write (QImage)
Вместо этого изменив код для кодирования в формате JPG,заставил код исполниться всего за 5мс для того же изображения.Получившийся код выглядел так:
QBuffer buffer;
buffer.open(QIODevice::WriteOnly);
image.save(&buffer,"JPEG");
К сожалению, я не нашел способа сказать QDataStream кодировать изображения в формате JPG, а не в формате PNG, поэтому очевидно, что сторона декодирования должна быть адаптирована для декодирования изображения следующим образом:
image.load(&buffer, "JPEG");