場景:有一副圖像,事先已經因為各種需要被讀取到了內存中,且不可再根據路徑讀取,只能讀取內存中的數據轉為QImage
1 //即使在已經知道圖像寬高和格式的情況下,第一種方法依然無法成功轉換 2
3 //方法1 不行
4 QImage image((unsigned char*)imgData,1920,1080,QImage::Format_RGB32); 5
6 //方法2 QByteArray也可以
7 image.loadFromData((unsigned char*)imgData,readLen,"JPG"); 8
9 //方法3 QByteArray也可以
10 image = image.fromData((unsigned char*)imgData,readLen,"JPG");
我在使用fromData的時候,忽略了fromData的返回值,一直以為不能轉換,后來才發現需要用image去接收轉換結果
函數原型:
1 bool loadFromData(const uchar *buf, int len, const char *format = nullptr); 2 bool loadFromData(const QByteArray &data, const char *aformat = nullptr); 3
4 static QImage fromData(const uchar *data, int size, const char *format = nullptr); 5 static QImage fromData(const QByteArray &data, const char *format = nullptr);
參數解釋:
參數1:無符號字符型數據或者QByteArray數據
參數2:數據長度
參數3:需要轉為什么格式的圖片,選取錯誤可能會導致轉換失敗
照片支持格式列表: