2010-02-23 124 views
1

我正在使用Qt庫創建QImages。來自數據流的QImage

我能使用this constructor

QImage image("example.jpg"); 

,但我有與this static function麻煩:

char buffer[sizeOfFile]; 
ifstream inFile("example.jpg"); 
inFile.read(buffer, sizeOfFile); 
QImage image = QImage::fromData(buffer); // error here 
// but there's nothing wrong with the buffer 
ofstream outFile("bufferOut.jpg"); 
outFile.write(buffer, sizeOfFile); 

對於Qt吐出到控制檯:

Corrupt JPEG data: 1 extraneous bytes before marker 0xd9 
JPEG datastream contains no image 

的以上不是究竟是我有什麼,但它是唯一重要的區別。 (我需要能夠因爲我打開是一個zip壓縮包內圖片從緩衝區讀取。)

回答

3

TNX到佩普從#qt irc.freenode.net上:

的解決方案是明確包含緩衝區的長度。忽略了幾個unsigned charchar類型轉換等細節,我應該用的是一個類似於:

QImage image = QImage::fromData(buffer, sizeOfFile); 
+0

你和佩佩是帥哥! – mlvljr 2014-07-15 14:41:57