我无法读取和写入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
Run Code Online (Sandbox Code Playgroud)
在将缓冲区写入文件后,我希望能够使用QPixmap :: loadFromData()函数检索QByteArray并将其加载回QPixmap.
如果需要进一步澄清,请告诉我(我也对其他方法持开放态度,我只需要能够将QPixmap读写到文件中!:));
Kal*_*son 40
这似乎是一个很长的路要走(但你的评论更好地解释):
写作:
QFile file("yourFile.png");
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");
Run Code Online (Sandbox Code Playgroud)
阅读:
QPixmap pixmap;
pixmap.load("yourFile.png");
Run Code Online (Sandbox Code Playgroud)
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. */;
Run Code Online (Sandbox Code Playgroud)
然后,你可以做同样的阅读:
QFile file("infile.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
in >> firstQString >> yourQPixmap >> yourList /* >> etc. */;
Run Code Online (Sandbox Code Playgroud)
您需要确保读取与编写它们相同的对象.为了避免将来出现兼容性问题,请明确设置QDataStream版本.
| 归档时间: |
|
| 查看次数: |
31481 次 |
| 最近记录: |