将QImage保存到QBuffer

时间:2015-07-10 15:20:39

标签: c++ qt qt4 qimage qdatastream

我正在做这样的事情:

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是否是正确的方法?

2 个答案:

答案 0 :(得分:3)

您可以使用QImage::save直接写入QIODevice,无论是缓冲区还是文件。

image.save(buffer);

与选项1相比,选项2看起来相当粗略;我当然更喜欢选择1美学。但我更喜欢我提到的API,而不是你给出的两个选项。

您可以阅读有关图像读/写here的更多信息。

答案 1 :(得分:1)

我刚刚做了类似的事情

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());