我无法读出和写入的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版本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top