Как проверить не битая ли картинка
По работе понадобилось из командной строки проверить несколько тысяч картинок на корректность — со смертью носителя часть картинок разрушилась. Чтобы их найти, придумался такой незамысловатый способ:
convert path_to_image null: 2>&- || echo File is corruptedЕсли картинка path_to_image разрушена, то этот однострочник выведет «File is corrupted».
Утилита convert входит в состав пакета «Imagemagick» и достаточно распространена.
Принцип понятен, наверное: я прошу утилиту сконвертировать файл, указанный первым параметром, в псевдоформат NULL (указан до двоеточия во втором параметре) — это специальный формат используется, когда результат конвертации не нужен — обычно для замера производительности.
Входная картинка полностью разбирается кодеком, если это не удаётся сделать, то convert поругается в поток вывода ошибок (который я закрыл) и вернёт код возврата отличный от нуля, на что среагируют две вертикальные черты, которые запустят вторую команду.
Конечно, картинка должна быть в формате, который утилита понимает, но всё хоть немного распростанённое туда входит.
Комментарии 2