В настоящее время я пытаюсь распаковать файл .cbz (в основном файл .zip) и сохранить все изображения .png, содержащиеся в этом файле .cbz, в файл 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?
fileList
содержит файлы в исходном файле .cbz. Однако после дальнейшего изучения файл .cbz содержит смесь изображений .jpeg и .png. Возможно, дело в этом? - person jq09   schedule 03.02.2019