Сохранение 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 — правильный путь?

0

Решение

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

image.save(buffer);

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

Вы можете прочитать больше об изображении для чтения / записи Вот.

3

Другие решения

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

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

По вопросам рекламы [email protected]