QZipReader reader(filename);
QPixmap thumbnail;
auto thumbnail_bytearr = reader.fileData("thumbnail.png");
thumbnail.loadFromData(thumbnail_bytearr, "PNG");
分割故障发生时,当调用 loadfromdata 时,就会发生故障,而我不明白为什么。存档还可以。
用:
替换loadFromData
QFile out("thumbnail-out.png");
out.open(QIODevice::WriteOnly);
out.write(thumbnail_bytearr);
out.close();
然后确保写入thumbnail-out.png
的内容是有效的PNG文件。只要Libpng可以阅读它,QT也应该阅读它。我的直觉是您的reader
返回破损,空或无效的字节数组。
我不确定您的问题在于从存档中提取,但最好通过编写获得字节数组到.png文件并检查是否是理智的。
。无论如何,QZipReader
是无证件的QT类,我不确定使用它是否合适,因为没有任何保证或任何东西。如果您不介意在QT之外使用QT之外的东西,我建议您易于使用,也可以使用zlib
的一部分。