У меня есть пользовательский QIODevice, который расшифровывает поток данных из другого QIODevice (это может быть файл).Он используется для шифрования и дешифрования файлов.Некоторые из файлов являются изображениями.Затем QImageReader используется для загрузки изображения непосредственно из потока шифрования, но в некоторых редких случаях QImageReader не может прочитать изображение из этого потока.Есть одно изображение в формате PNG, которое QImageReader может правильно прочитать из незашифрованного файла.Но когда мой пользовательский QIODevice накладывается на QFile и передается в QImageReader, он не работает и печатает
"libpng error: IDAT: CRC error"
Я провел интенсивную отладку и отследил всечитает и ищет, что QImageReader будет вызывать на моем QIODevice, и помещает их вместе с этими из QFile незашифрованного файла:
device.read(encData, 2 );
file.read(pngData, 2 );
Q_ASSERT(memcmp(encData, pngData, 2) == 0);
device.read(encData, 6 );
file.read(pngData, 6 );
Q_ASSERT(memcmp(encData, pngData, 6) == 0);
device.seek(0 );
file.seek(0 );
....
И оказалось, что все данные, прочитанные из файла, точно такие же, какданные, поступающие из потока ...
почему он возвращает эту ошибку libpng?