题
我无法读出和写入的QByteArray数据到文件中。
我的目标是的QPixmap数据保存到一个QByteArray中并保存的QByteArray到一个文件(与读这个QByteArray中从该文件返回并进入的QPixmap的能力)。我想使用以下从文档的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
将缓冲区写入到文件后,我希望能够检索的QByteArray和使用的QPixmap :: loadFromData()函数回到加载到的QPixmap。
请让我知道是否需要任何进一步的澄清(我打开替代方法为好,我只需要能够读取和写入的QPixmap到文件:)!);
解决方案
这似乎是一个很长的路要走,约做(但您的评论更好解释):
有关写作:
QFile file("yourFile.png");
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");
有关阅读:
QPixmap pixmap;
pixmap.load("yourFile.png");
QBuffer
是伟大的,当你需要一个QIODevice
,并希望保持它在内存中,但如果你真的要出到磁盘,然后它是一个不必要的中间步骤。
修改强>
要写入像素图,和其他的东西,以一个单一的文件,我建议你使用的 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版本。
不隶属于 StackOverflow