我无法读取和编写QByteArray数据到文件。
我的目标是将QPixmap数据保存到QByteArray中并将该QByteArray保存到文件中(能够从文件和QPixmap中读取此QByteArray)。我想使用QPixmap文档中的以下代码:
QPixmap pixmap(<image path>);
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
pixmap.save(&buffer, "PNG"); // writes pixmap into bytes in PNG format
将缓冲区写入文件后,我希望能够使用QPixmap :: loadFromData()函数检索QByteArray并将其加载回QPixmap。
如果需要进一步澄清,请告诉我(我也对其他方法持开放态度,我只需要能够将QPixmap读写到文件中!:));
答案 0 :(得分:38)
这似乎是一个很长的路要走(但你的评论更好地解释):
写作:
QFile file("yourFile.png");
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");
阅读:
QPixmap pixmap;
pixmap.load("yourFile.png");
QBuffer
非常棒,当你需要QIODevice
并希望将其保留在内存中时,如果你真的要去磁盘,那么这是一个不必要的中间步骤。
编辑:
要将pixmaps和其他内容写入单个文件,我建议您使用QDataStream。
写作:
QFile file("outfile.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out << QString("almost any qt value object")
<< yourQPixMap << yourQList /* << etc. */;
然后,你可以做同样的阅读:
QFile file("infile.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
in >> firstQString >> yourQPixmap >> yourList /* >> etc. */;
您需要确保读取与编写它们相同的对象。为了避免将来出现兼容性问题,请明确设置QDataStream版本。