2010-02-23 6 views
1

J'utilise la bibliothèque Qt, en créant QImages.QImage du flux de données

Je suis en mesure d'utiliser this constructor:

QImage image("example.jpg"); 

Mais je vais avoir du mal avec 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); 

Où Qt recrache à la console:

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

Le ci-dessus n'est pas exactement ce que j'ai, mais c'est la seule différence importante. (Je dois être capable de lire à partir d'un tampon parce que je ouvrir des images qui sont dans une archive zip.)

Répondre

3

Tnx à Peppe de #qt sur irc.freenode.net:

La solution est de inclure explicitement la longueur du tampon. Ignorant quelques unsigned char à char transtypage et d'autres détails, ce que je aurais dû utiliser est quelque chose qui ressemble à:

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

Vous et Pepe sont les gars! – mlvljr

Questions connexes