2015-07-10 39 views
0

我做這樣的事情:保存的QImage到Q緩衝器

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

與選項1相比,選項2看起來非常粗糙;我肯定會更喜歡選擇1美學。但我更喜歡我提到的兩個選項的API。

您可以閱讀更多關於圖像讀取/寫入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());