我目前正在尝试解压缩.cbz文件(基本上是.zip文件)并将该.cbz文件中包含的所有.png图像存储到std::vector<QImage>
中。
我正在使用QuaZip执行此操作。我在线上看了一些示例,并尝试使用QuaZip类文档实现一些不同的方法。
这是我目前拥有的代码:
// Store all files for later access given the CBZ file
bool CbzReader::loadCbzFile(QString cbzFile) {
QuaZip zip(cbzFile);
zip.open(QuaZip::mdUnzip);
const QStringList fileList = zip.getFileNamesList();
QStringList allFiles = JlCompress::extractFiles(cbzFile, fileList);
QImage newImage;
for(int file = 0; file < fileList.size(); file++) {
QImageReader reader(allFiles[file]);
newImage = reader.read();
if(newImage.isNull()) return false;
imageList.push_back(newImage); //save image to class variable
}
return true;
}
变量allFiles
包含265个条目,但是在for循环中,它返回false
,因为Qt称newImage
为invalid
。
这是我做错了吗?我应该在QuaZip中使用其他功能代替JlCompress吗?
答案 0 :(得分:1)
事实证明,提取.cbz文件导致至少一个不是图像文件的文件,并且试图从中提取QImage,从而导致错误。我对压缩文件的内容没有给予足够的关注。
由于我使用布尔表达式检查未压缩文件的文件扩展名,所以现在可以使用此功能。
是的,我的坏家伙。