繁体   English   中英

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

[英]Using QuaZip to extract .cbz and create QImages in Qt?

我目前正在尝试解压缩.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?

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

由于我使用布尔表达式来检查未压缩文件的文件扩展名,因此现在可以使用。

是的,我的坏家伙。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM