from PySide2.QtCore import QByteArray, QIODevice, QDataStream, QCryptographicHash from PySide2.QtGui import QPixmap from PySide2.QtWidgets import QApplication def save(pixmap: QPixmap): print("=== save ===") print("Saving", pixmap.size()) data = QByteArray() dataStream = QDataStream(data, QIODevice.WriteOnly) dataStream << pixmap print("Saved size:", data.size()) print("Saved hash:", QCryptographicHash.hash(data, QCryptographicHash.Md5).toHex()) return data def restore(data: QByteArray): dataStream = QDataStream(data, QIODevice.ReadOnly) pixmap = QPixmap() dataStream >> pixmap print("=== restored ===") print("Image size:", pixmap.size()) return pixmap if __name__ == "__main__": app = QApplication([]) pixmapName = "test.png" pixmap = QPixmap(pixmapName) assert not pixmap.isNull() data = save(pixmap) pixmap = restore(data) assert not pixmap.isNull() data = save(pixmap) pixmap = restore(data) assert not pixmap.isNull()