изменить:
Извините, я думаю, мой вопрос был расплывчатым. Я хотел бы иметь способ проверить, является ли файл не изображением, не тратя время на загрузку всего изображения, потому что тогда я смогу выполнить остальную загрузку позже. Я не хочу просто проверять расширение файла.
Приложение просто просматривает изображения. Под «проверкой правильности» я имел в виду «обнаружение и пропуск файлов, не являющихся изображениями», также в каталоге. Если данные пикселей повреждены, я бы хотел по-прежнему рассматривать их как изображение.
Я присваиваю номера страниц и соединяю эти изображения. Некоторые изображения представляют собой одну левую или правую страницу. Некоторые изображения широкие и представляют собой «разворот» левой и правой страниц. Например, pagesAt(3) и pagesAt(4) могут возвращать одну и ту же пару std::pair изображений или std::pair одного и того же широкого изображения.
Иногда существует нечетное количество «тонких» изображений, и первое изображение должно отображаться отдельно, как и широкое изображение. Примером может быть одна титульная страница.
Незнание того, какие файлы в каталоге не являются изображениями, означает, что я не могу с уверенностью присвоить эти номера страниц и объединить файлы для отображения. Кроме того, пользователь может решить перейти на страницу X, и когда я позже обнаружу и удалю файл, не являющийся изображением, и соответствующим образом переназначу номера страниц, страница X может оказаться другим изображением.
исходный:
Если это имеет значение, я использую c++ и QImage из библиотеки Qt.
Я перебираю каталог и использую конструктор QImage для путей к изображениям. Это, конечно, довольно медленно и заставляет приложение чувствовать себя невосприимчивым. Тем не менее, это позволяет мне обнаруживать недопустимые файлы изображений и игнорировать их на ранней стадии.
Я мог бы просто сохранить только пути к изображениям при просмотре каталога и фактически загружать их только тогда, когда они нужны, но тогда я не знал бы, является ли изображение недействительным или нет.
Я подумываю сделать комбинацию из этих двух. т. е. при переборе каталога чтение только заголовков изображений для проверки правильности, а затем при необходимости загрузка данных изображения.
So,
Будет ли загрузка только заголовков изображения намного быстрее, чем загрузка всего изображения? Или выполнение небольшого количества операций ввода-вывода для чтения заголовка означает, что я мог бы завершить загрузку изображения полностью? Позже я также буду распаковывать изображения из архивов, так что это также относится к распаковке только заголовка по сравнению с распаковкой всего файла.
Кроме того, я не знаю, как загружать/читать только заголовки изображений. Есть ли библиотека, которая может читать только заголовки изображений? В противном случае мне пришлось бы открывать каждый файл как поток и кодировать программы чтения заголовков изображений для всех типов файлов самостоятельно.