我正在做这样的事情:
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是否是正确的方法?
答案 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());