我在读取 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");
当您需要 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 版本。
关于qt - 如何将 QPixmap 对象保存到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2430877/