2010-02-23 108 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