QImage из потока данных

Я использую библиотеку Qt, создавая QImages.

Я могу использовать этот конструктор:

QImage image("example.jpg");

Но у меня возникли проблемы с этой статической функцией:

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-архива.)


person Kache    schedule 23.02.2010    source источник


Ответы (1)


Tnx на peppe от #qt на irc.freenode.net:

Решение состоит в том, чтобы явно указать длину буфера. Игнорируя несколько типов от unsigned char до char и другие детали, я должен был использовать что-то вроде:

QImage image = QImage::fromData(buffer, sizeOfFile);
person Kache    schedule 23.02.2010
comment
Вы с Пепе молодцы! - person mlvljr; 15.07.2014