0

我正在做这样的事情:

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

4

2 回答 2

3

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

image.save(buffer);

与选项 1 相比,选项 2 看起来很恶心;从美学上讲,我当然更喜欢选项 1。但我更喜欢我提到的 API,而不是你提供的两个选项。

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

于 2015-07-10T15:31:01.923 回答
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()); 
于 2015-07-24T11:15:23.177 回答