qt - 如何将 QPixmap 对象保存到文件?

标签 qt 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 并将其写入文件!:) );

最佳答案

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

写作:

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/

相关文章:

linux - 在 QT 应用程序中嵌入应用程序(在本例中为终端)

c++ - LeapMotion、Qt 和信号

qt - 使用特定 QT 版本运行二进制文件 - 不能混合不兼容的 Qt 库

C++ opencv Mat 到 QPixmap 错误

qt - 如何在Qt中为不同的按钮设置不同的图标?

c++ - Qt Creator - 如何为 ubuntu linux 设置应用程序图标?

c++ - 在 QGraphicsView/QGraphicsScene 上用鼠标移动项目

c++ - QPixmap 仅适用于绝对路径

python - 在调整窗口大小的同时保持 QLabel 中图像的纵横比

c++ - QPixmap 绘制性能问题