Сохранение QImage в QBuffer

Я делаю что-то вроде этого:

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 правильный?


person surana4u    schedule 10.07.2015    source источник


Ответы (2)


Вы можете использовать QImage::save для прямой записи в QIODevice, будь то буфер или файл.

image.save(buffer);

Вариант 2 выглядит довольно грубо по сравнению с Вариантом 1; Я, конечно, предпочел бы Вариант 1 эстетически. Но я бы предпочел API, о котором я упоминал, обоим вариантам, которые вы даете.

Подробнее о чтении/записи изображений можно прочитать здесь< /а>.

person George Hilliard    schedule 10.07.2015

Я только что сделал что-то подобное

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()); 
person John    schedule 24.07.2015