gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:25:07 27 4
gpt4 key购买 nike

我目前正在尝试解压缩一个 .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据说是invalid通过 Qt。

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

最佳答案

事实证明,提取 .cbz 文件至少会产生一个不是图像文件的文件,而 QImage 正试图以此为基础,导致错误。我没有对解压缩文件的内容给予足够的关注。

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

所以,是的,我的坏人。

关于c++ - 使用 QuaZip 提取 .cbz 并在 Qt 中创建 QImages?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54504346/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com