Я делаю что-то вроде этого:
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);
Вариант 2 выглядит довольно грубым по сравнению с вариантом 1; Я, конечно, предпочел бы вариант 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());