QPixmap loadFromData()分段错误

时间:2014-02-05 21:09:18

标签: c++ qt segmentation-fault qpixmap

 QZipReader reader(filename);

 QPixmap thumbnail;
 auto thumbnail_bytearr = reader.fileData("thumbnail.png");

 thumbnail.loadFromData(thumbnail_bytearr, "PNG");

调用 loadFromData 时发生分段错误,我无法理解原因。存档没问题。

2 个答案:

答案 0 :(得分:0)

loadFromData替换为:

QFile out("thumbnail-out.png");
out.open(QIODevice::WriteOnly);
out.write(thumbnail_bytearr);
out.close();

然后确保写入thumbnail-out.png的内容是有效的PNG文件。只要libpng可以读取它,Qt也应该读它。我的预感是你的reader返回破碎,空或无效的字节数组。

答案 1 :(得分:0)

我不确定您的问题是从存档中提取但是最好通过将获得的字节数组写入.png文件并检查它是否合理来检查它。

无论如何QZipReader没有证件Qt I级我不确定它是否适合使用它,因为无法保证或无论如何。如果您不介意使用Qt之外的其他内容,我建议使用Minizip这是一款易于使用的内容,也是zlib的一部分。