2013-01-02 174 views
2

我很驚訝,因爲我找不到從原始數據加載圖像的任何方法。有沒有優雅的方式來做到這一點?我只需要從原始位圖二進制數據(無標題)創建一個QImage或類似的。從Qt加載原始數據圖像

回答

3

您可以使用包含uchars數組的ctor從原始數據創建QImage對象。 您需要指定給QImage的數據格式(RGB,RGBA,索引等)

QImage (uchar * data, int width, int height, Format format) 
QImage (const uchar * data, int width, int height, Format format) 
QImage (uchar * data, int width, int height, int bytesPerLine, Format format) 
QImage (const uchar * data, int width, int height, int bytesPerLine, 
     Format format) 

http://doc.qt.digia.com/qt/qimage.html

例如爲:

uchar* data = getDataFromSomewhere(); 
QImage img(data, width, height, QImage::Format_ARGB32); 

希望有所幫助。

+0

親愛的盧卡斯,謝謝你的回答。當然它有幫助!問題是我不想創建一個QImage對象的新實例。不管怎麼說,還是要謝謝你。乾杯 –

+0

@DídacPérez考慮到Qt的重量級值類型的寫時複製語義,創建新圖像實例並將其分配給現有對象應該不會有任何傷害。 –

-1

你的問題不清楚。使用Qpixmap。和Qbyte陣列。它非常容易。

QPixmap pic; 
    pic.loadFromData(array); //array contains a bite array of the image. 
    label->setPixmap(pic); //do what ever you want from the image. here I set it to a lable. 
+0

親愛的Lakshan,你的回答與digitalSurgeon完全相同,請閱讀我上面的評論。 –