将 QImage 保存到 QBuffer
Posted
技术标签:
【中文标题】将 QImage 保存到 QBuffer【英文标题】:Saving a QImage to QBuffer 【发布时间】:2015-07-10 15:20:39 【问题描述】:我正在做这样的事情:
QImage image(width, height, QImage::Format_RGB32);
frame.fill(QColor(255, 255, 255).rgb());
QBuffer buffer;
buffer.open(QBuffer::ReadWrite);
QDataStream out(&buffer);
选项 1:
out << image;
选项 2:
out.writeRawData((char *) image.constBits(), image.byteCount()) ;
选项 1 很慢,我不确定选项 2 是否正确?
【问题讨论】:
【参考方案1】:您可以使用QImage::save
直接写入QIODevice
,无论是缓冲区还是文件。
image.save(buffer);
与选项 1 相比,选项 2 看起来很糟糕;从美学上讲,我当然更喜欢选项 1。但我更喜欢我提到的 API,而不是你提供的两个选项。
您可以阅读更多关于图像读/写的信息here。
【讨论】:
【参考方案2】:我刚刚做了类似的事情
QByteArray byteArray;
QBuffer buffer(&byteArray);
image.save(&buffer, "PNG"); // writes the image in PNG format inside the buffer
要输出缓冲区,我会使用 QString,我用它来转换为 base64
QString imgBase64 = QString::fromLatin1(byteArray.toBase64().data());
【讨论】:
以上是关于将 QImage 保存到 QBuffer的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 中使用 QImage 而不制作 Qt 项目?
将 NSImage 加载到 QPixmap 或 QImage 中