Практичность консольных приложений: ImageMagick

Материал из Rosalab Wiki
Версия от 21:18, 31 октября 2022; Noname (обсуждение | вклад) (Перенес статью)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


Недавно приятель вернулся из командировки, зашёл в гости и рассказал историю, которая мне представляется довольно типичной. Подробностями я не особо интересовался, но суть была в том, что ему потребовалось оформить фотографии — в левый верхний угол поместить надпись, а весь снимок «взять» в небольшую однотипную «рамку». Узнал он про это, как водится, вечером, хотя результат был нужен на следующее утро. А фотографий — где-то примерно сотня.

Поскольку товарищ никогда раньше фотографии не редактировал, то он пошёл по самому простому, на его взгляд, пути. При помощи графического редактора LibreOffice Draw он вручную обработал все снимки, предварительно разобравшись, как это делается. При этом, добиваясь хотя бы примерного единообразия. Про сон, разумеется, пришлось забыть.

А теперь я подхожу к главному тезису этой заметки. Для непрофессионала значительно проще пользоваться текстовыми утилитами, а не программами с графическим интерфейсом. Даже в таком явно «визуальном» процессе, как обработка фотографий. Применение команды на практике означает, что пользователь всего-навсего «объясняет» машине, что она должна сделать. И «переводит» команду на «понятный» машине язык.

Я точно такой же «чайник» в изобразительном искусстве, как и мой приятель. Но ту же самую работу смог выполнить за полчаса. Полминуты на формулировку задачи, двадцать минут на чтение инструкции к программе ImageMagick, остальное — на написание самой команды методом проб и ошибок.

Потом для проверки запустил её в каталоге с фотографиями, сделанными мной этим летом в Зеленоградске. Минут через 20 (как раз чай попили) машина обработала около 200 снимков, причём идеально единообразно.

Вот так выглядит команда на «понятном» для машины языке:

   mkdir result ; for i in *.JPG; do convert -border 40 -bordercolor gray -fill white -font Liberation-Sans-Italic -pointsize 72 -draw 'text 80 100 "Зеленоградск — 2014"' "$i" "result/$i"; done

По-моему, тут даже комментарии не нужны. Команда настолько проста, что с человеческого языка на машинный она переводится очень быстро.

А вот так выглядит результат:

2.JPG

Источник