#include #include #include #include QByteArray save(const QPixmap &pixmap) { qDebug() << "=== save ==="; qDebug() << "Saving" << pixmap.size(); QByteArray data; QDataStream dataStream{&data, QIODevice::WriteOnly}; dataStream << pixmap; qDebug() << "Saved size:" << data.size(); qDebug() << "Saved hash:" << QCryptographicHash::hash(data, QCryptographicHash::Md5).toHex(); return data; } QPixmap restore(QByteArray data) { QDataStream dataStream{&data, QIODevice::ReadOnly}; QPixmap pixmap; dataStream >> pixmap; qDebug() << "=== restored ==="; qDebug() << "Image size:" << pixmap.size(); return pixmap; } int main(int argc, char *argv[]) { QGuiApplication app{argc, argv}; QString pixmapName{"test.png"}; QPixmap pixmap{pixmapName}; Q_ASSERT(!pixmap.isNull()); auto data = save(pixmap); pixmap = restore(data); Q_ASSERT(!pixmap.isNull()); data = save(pixmap); pixmap = restore(data); Q_ASSERT(!pixmap.isNull()); return 0; }