我正在做这样的事情:
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());