使用QuaZip提取.cbz并在Qt中创建QImages



我目前正在尝试解压缩一个 .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,因为据说newImage是由 Qt invalid的。

我做错了什么? 我应该在QuaZip中使用不同的函数而不是JlCompress吗?

事实证明,提取 .cbz 文件会导致至少一个文件不是图像文件,并且 QImage 试图从中制作,从而导致错误。 我没有足够注意解压缩文件的内容。

这现在可以工作了,因为我正在使用布尔表达式来检查未压缩文件的文件扩展名。

所以是的,我的坏人。

相关内容

  • 没有找到相关文章