如何将 QPixmap 对象保存到文件?
我在读取 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 并将其写入文件!:));
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这似乎是一个很长的路要走(但你的评论更好地解释了):
对于写作:
对于阅读:
当你需要一个
QIODevice
并且想要时,QBuffer
非常有用将其保留在内存中,但如果您实际上要写入磁盘,那么这是不必要的中间步骤。编辑:
要将像素图和其他内容写入单个文件,我建议您使用 QDataStream。
对于写入:
然后,您可以对读取进行类似的操作:
您需要确保读入的对象与写出的对象相同。为了避免将来出现兼容性问题,请显式设置 QDataStream 版本。
That seemed like a really long way to go about doing it (but your comment better explains):
For writing:
For reading:
QBuffer
is great when you need aQIODevice
and want to keep it in memory, but if you're actually going out to disk, then it's an unnecessary middle step.EDIT:
To write pixmaps, and other things, to a single file I'd recommend that you use QDataStream.
For writing:
Then, you can do similarly for reading:
You'll need to make sure that you read in the same objects as you wrote them out. In order to save yourself future compatibility headaches, set the QDataStream version explicitly.