@Unicom

Консольная команда для выборки картинок по их разрешению. Как?

В общем задача такая. На диске несколько миллионов картинок распиханных по разным папкам. Я хочу пакетно взять все это дело и пережать под одно качество и одинаковый dpi.

Как сделать это с одной картинкой, примерно понятно:
mogrify -quality 70 -density 72
а как сделать выборку картинок из всех папок/подпапок, разрешением только до 1024 по большей стороне одной строчкой?

Нужных аргументов к команде find найти не удалось, и развить конструкцию:
find /input/ -iname '*.jpg' -print0
не получается.

Сразу поясню, почему необходимо выборку делать с размером меньшим 1024? Потому, что, выборку по картинкам с большим размером я уже сделал и привел все к одному виду командой:
find /input/ -iname '*.*' -print0 | xargs -0 mogrify -resize '1024x1024>' -quality 70 -density 72

Эта пакетная обработка уже позаботилась о разрешении больших картинок, приведя все к одному разрешению и качеству. К сожалению mogrify -resize '1024x1024>' годится только для выборки бОльших размеров. Чтобы найти все малые размеры и не менять их разрешение (ну не экстраполировать же в самом деле), а просто поджать этот метод не годится (вроде бы).
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 3
  • sotvm
    @sotvm
    найдя интересующие изображения (по маске расположение/расширение/вес),
    перенаправьте | утилитам/плагинам фоторедакторов,они уже прочитают атрибуты изображений.
    вам так важно это сделать в консоли?
    в графическом варианте проще/нагляднее ,тот же xnview c этим справится на ура,
    или почитать маны для консольного варианта
    Ответ написан
  • Moskus
    @Moskus
    Используйте команду identify с шаблоном вывода для создания базы изображений (текстового файла, через перенаправление), потом пройдите по этой базе циклом.
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы