2015-07-10 17 views
0

Я делаю что-то вроде этого:Сохранение 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 - правильный способ?

ответ

3

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

image.save(buffer); 

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

Подробнее читайте/пишите image here.

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

 Смежные вопросы

  • Нет связанных вопросов^_^