НовостиСобытияКонференцииФорумыIT@Work
Open Source:

Блог

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

Сергей Голубев
19.11.2014 12:36:22
Теги: Юзабилити

Специфика деятельности сотрудника, работающего по модели BYOD (всё-таки пора уже придумать ему какое-то короткое и понятное название — бжодер, бъёдер или что-то ещё), заключается в ориентированности на конечный результат. И, как следствие этого, в необходимости часто выходить за рамки своей служебной компетентности.

Речь даже не про техническое обслуживание собственной системы — к этому, по большому счёту, все готовы. А про какие-то дополнительные работы, о которых заранее человек даже предположить не мог.

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

Поскольку товарищ никогда раньше фотографии не редактировал, то он пошёл по самому простому, на его взгляд, пути. При помощи графического редактора 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


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

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

Комментариев: 7

Только зарегистрированные и авторизованные пользователи могут добавлять комментарии

19.11.2014 16:00:42

Консольные утилиты хороши, но кривая "сложности обучения" нарастает заметно круче, чем для графических интерфейсов. Добавьте к вашей задаче несколько дополнительных требований и попробуйте справиться в консоли:
1. Рамку сделать не прямоугольную, а художественную с каким-нибудь эффектом. Например, прозрачностью.
2. На текст тоже наложите эффект. К примеру, тень.
Скорее всего, даже если консольная утилита это поддерживает, вы получите слишком длинную и сложную командную строку. Которой и сложно манипулировать, и сложно искать в манах нужные ключи среди сотен возможных.

19.11.2014 17:49:53

Я бы попробовал задать цвет кодом с указанием параметра прозрачности. Это без чтения манов — по интуиции smile:).
К тому же, усложнение задачи — это усложнение для любого инструмента. Сложнее команда imagemagick — сложнее и манипуляции с кнопками в LO Draw. И наконец, будем исходить из того, что у бжодера более-менее адекватное начальство, которое не будет давать ему заданий, явно выходящих за всякие разумные рамки smile:).

27.11.2014 02:21:42

Вот еще один вариант без консоли — проприетарное но вполне годное решение для "бжодера" в т.-ч. линуксоида — XnviewMP.
выделяем в окне обозревателя группу файлов щелкаем правой кнопкой мышки -> выбираем команду "Пакетное преобразование" -> Для создания рамки добавляем действие «Добавление маски». В настройках действия выбираем маску из стандартного набора.либо создаем свою маску в любом фоторедакторе (сама маска черного цвета а место под фотку либо белое либо прозрачное). Настройками действия можно варьировать прозрачность, цвет и другие параметры маски. Можно файл маски в gimp создать с помощью команды «фильтры - декорация - добавить рамку» и сохранить в png или gif или даже в jpeg (напоминаю — градации черного цвета в этом файле будет восприниматься как степень непрозрачности а белый как абсолютно прозрачный. -> Для создания надписи добавляем действие «Добавить текст» и извращаемся там как хотим с текстом.
Если вам и это трудно понять как бжодеру, то я не знаю. Хотя я знавал бжодеров, которые знали где качнуть пиратский фотошлеп и приходили на работу с ноутом, обвешанным последними новинками софтвея. Поразительно, найти где пиратку качнуть мозгов хватает а изучить то, что можно бесплатно использовать — сразу тупыми становимся.

В любом случае — это не сложнее ковыряния в консоли, предлагаемое вами. Ну может быть толщина рамки в этом варианте не будет одинаковая со всех краев, так как маска создается под конкретный размер.
Upd 1. Пардон, не туда коммент добавил. Считайте его новой веткой.

Upd 2. Докопался таки. Можно в XnView рамку и без маски добавить. Добавить действие -> РАзное -> Обрамление. Все, И идем пить кофе с булочками. smile:D

25.11.2014 21:32:04

Специально зарегился на pcweek.ru чтобы продублировать свой комментарий в foss-blog.ru

Ну, допустим, я консоль люблю. Была подобная ситуация решил похожим способом

Но вот для хейтеров консоли специально

http://www.alessandrofrancesconi.it/projects/bimp/

Рамка
Добавить –> Other gimp procedure –>script-fu-addborder
Текст
Добавить –> Apply a watermark text or image

Советую присмотреться к пункту Other gimp procedure там сильно больше функций чем показано в меню “Добавить”

26.11.2014 11:19:28

Спасибо, прекрасная иллюстрация.
Если использовать GIMP, то надо доустановить script-fu (их может не быть в составе пакета по умолчанию), а перед этим где-то прочесть, что нужно доустановить script-fu. А потом обрабатывать отдельно каждую фотографию. Причём, добиваясь единообразия. Не думаю, что это будет быстрее.

27.11.2014 01:13:32

Вам бы лишь поспорить. В большинстве случаев script-fu автоматом устанавливается и пользователь об этом не догадывается. И с чего вы взяли, что в Bimp каждую фотографию нужно отдельно обрабатывать? Можно даже загрузить папку или кучку файлов а наборы действий можно сохранить под внятными названиями с расширением *.bimp если это необходимо.

27.11.2014 02:43:47

вот вы мне скажите, как выдать из консоли на листе формата A4 мелкие превьюхи фоток в 3 столбца по 4 строки с подписью к каждой превьюхе, где полное имя файла (то есть путь плюс имя с расширением) указано. А я посмеюсь smile:D
Поверьте мне на слово — эта операция более востребована, чем случай, который вы описали
UPd И здесь лучше geeqie зверя нет!

Только зарегистрированные и авторизованные пользователи могут добавлять комментарии