首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将QPixmap对象保存到文件中?

如何将QPixmap对象保存到文件中?
EN

Stack Overflow用户
提问于 2010-03-12 14:17:07
回答 1查看 38.2K关注 0票数 23

我在读取QByteArray数据和将其写入文件时遇到问题。

我的目标是将QPixmap数据保存到一个QByteArray中,并将该QByteArray保存到一个文件中(能够将该QByteArray从文件中读回到QPixmap中)。我想使用QPixmap文档中的以下代码:

代码语言:javascript
复制
     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读写到文件!: );

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-12 14:37:03

这似乎是一条很长的路要走(但你的评论更好地解释了这一点):

对于写作:

代码语言:javascript
复制
QFile file("yourFile.png");
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");

阅读:

代码语言:javascript
复制
QPixmap pixmap;
pixmap.load("yourFile.png");

当您需要一个QIODevice并希望将其保存在内存中时,QBuffer是很好的选择,但是如果您真的要使用磁盘,那么它就是一个不必要的中间步骤。

编辑:

要将像素图和其他内容写入单个文件,我建议您使用QDataStream

对于写作:

代码语言:javascript
复制
QFile file("outfile.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out << QString("almost any qt value object")
    << yourQPixMap << yourQList /* << etc. */;

然后,您可以对阅读进行类似的操作:

代码语言:javascript
复制
QFile file("infile.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
in >> firstQString >> yourQPixmap >> yourList /* >> etc. */;

您需要确保读入的对象与写出的对象相同。为了避免将来的兼容性问题,请显式设置QDataStream版本。

票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2430877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档