Saving a QImage to QBuffer

Saving a QImage to QBuffer

本文关键字:QBuffer to QImage Saving      更新时间:2023-10-16

我正在做这样的事情:

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

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

image.save(buffer);

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

您可以在这里阅读更多关于图像读写的信息

我刚刚做了类似的事情

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