我在读取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读写到文件!: );
发布于 2010-03-12 14:37:03
这似乎是一条很长的路要走(但你的评论更好地解释了这一点):
对于写作:
QFile file("yourFile.png");
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");
阅读:
QPixmap pixmap;
pixmap.load("yourFile.png");
当您需要一个QIODevice
并希望将其保存在内存中时,QBuffer
是很好的选择,但是如果您真的要使用磁盘,那么它就是一个不必要的中间步骤。
编辑:
要将像素图和其他内容写入单个文件,我建议您使用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版本。
https://stackoverflow.com/questions/2430877
复制相似问题