QPIXMAP LOADFROMDATA()分割故障

QPixmap loadFromData() segmentation fault

本文关键字:分割 故障 LOADFROMDATA QPIXMAP      更新时间:2023-10-16
 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的一部分。