Comments 54
> Кстати, может-ли кто-нибудь показать на BASH, как сделать такой простенький скрипт
> в одну строчку, чтобы у них не изменялись имена?
Использовать mogrify вместо convert.
> в одну строчку, чтобы у них не изменялись имена?
Использовать mogrify вместо convert.
закинет все в поддиректорию resized/
for PHOTO in *.[jJ][pP][gG]; do convert -resize 800x $PHOTO resized/$PHOTO; done
Консоль не заменяет UI-приложения, но удачно их дополняет. Когда я сливаю фотографии с карточки в mc и запускаю скрипт для стандартной подготовки, это происходит очень быстро, с минимумом кликов и зрительного напряжения и при этом трудно ошибиться. С UI-программами — надо запустить прогу, найти каталог, выбрать правильные файлы, выбрать нужное действие… а скрипт уже давным-давно всё закончил.
Только XnView долгие годы развивали лишь виндовую версию, а под линуксом и FreeBSD была доступна лишь страшная 1.70.
Часто использую mogrify для ужатия фоток и jhead для поворота по EXIF:
mogrify -resize 640 *.jpg
jhead -autorot *.jpg
mogrify -resize 640 *.jpg
jhead -autorot *.jpg
Кстати, ещё две идеи для фотоскриптов:
1) Я ещё не разобрался в причине, но некоторые сайты, принимающие к загрузке фото, не поворачивают вертикально ориентированные картинки согласно ориентации в EXIF. Приходится делать это вручную в GIMP. А вот был бы скрипт, который можно натравливать на директорию со всеми фотками — было бы хорошо.
2) Скрипт для впечатывания копирайта. С горизонтальными снимками всё просто — ставь в какой-нибудь угол заранее определённый, и ладно. Правда, там может оказаться светлая область — тогда бы неплохо тёмным текстом написать, вот тоже задачка :) А вот на вертикальных как ставить — это тоже вопрос, в другой какой-то угол или вдоль вертикальной стороны повёрнутым… В любом случае скрипт должен ориентацию отслеживать.
1) Я ещё не разобрался в причине, но некоторые сайты, принимающие к загрузке фото, не поворачивают вертикально ориентированные картинки согласно ориентации в EXIF. Приходится делать это вручную в GIMP. А вот был бы скрипт, который можно натравливать на директорию со всеми фотками — было бы хорошо.
2) Скрипт для впечатывания копирайта. С горизонтальными снимками всё просто — ставь в какой-нибудь угол заранее определённый, и ладно. Правда, там может оказаться светлая область — тогда бы неплохо тёмным текстом написать, вот тоже задачка :) А вот на вертикальных как ставить — это тоже вопрос, в другой какой-то угол или вдоль вертикальной стороны повёрнутым… В любом случае скрипт должен ориентацию отслеживать.
Так я ж просто идеями делюсь в данном комменте :)
По п.1 мне уже подсказали.
По п.2 технология как раз понятна, идея заключалась в том, чтобы написать мега-скрипт, который ставит картинку в разные места в зависимости от ориентации снимка, и разными цветами — в зависимости от фона.
По п.1 мне уже подсказали.
По п.2 технология как раз понятна, идея заключалась в том, чтобы написать мега-скрипт, который ставит картинку в разные места в зависимости от ориентации снимка, и разными цветами — в зависимости от фона.
Обычно народ не парится и делает либо так:

либо так:

И то, и другое отлично читается на любом фоне. Получение типа ориентации снимка тоже довольно тривиальная задача:
Зная ориентацию легко расположить надпись или картинку в нужном месте, см. вторую ссылку.

либо так:

И то, и другое отлично читается на любом фоне. Получение типа ориентации снимка тоже довольно тривиальная задача:
#!/bin/bash
# Определяем отношение ширины картинки к высоте
# Если оно меньше 1 - это портрет, равно - квадрат, больше - пейзаж
RATIO=`identify -format %[fx:w/h] $1`
if [ $RATIO == "1" ]; then
echo "square"
else
RAT_NUM=`echo $RATIO | sed -e 's/\(.\).*/\1/'`
if [ $RAT_NUM -eq 0 ]; then
echo "portrait"
else
echo "landscape"
fi
fi
Зная ориентацию легко расположить надпись или картинку в нужном месте, см. вторую ссылку.
Для imagick (PHP-интерфейс к ImageMagick) такой скрипт есть. Я давно использую на своем сайте, безмерно благодарна автору. Думаю, если поковыряться в нем — можно для консоли сделать аналог.
Думаю, лучше будет выглядеть текст, как на рабочем столе, вроде, любой системы (тонкая обводка белого текста черным цветом и небольшая тень)
А вот об этом — следующий топик. С примерами кода (и автоматический поворот, и подписывание) да ссылкой на гитхаб, откуда можно взять готовые скрипты.
1. exiftran
exiftran is a command line utility to transform digital image jpeg
images. It can do lossless rotations like jpegtran, but unlike
jpegtran it cares about the EXIF data: It can rotate images
automatically by checking the exif orientation tag, it updates the
exif informaton if needed (image dimension, orientation), it also
rotates the exif thumbnail. It can process multiple images at once.
2.
#!/bin/sh
mkdir converted
#for i in *.[nN][eE][fF]
for i in *.[jJ][pP][gG]
#for i in *.[pP][pP][mM]
do
convert $i -resize 800x600 -font helvetica -pointsize 16 -draw «gravity SouthEast fill gray text 0,1 'www.slk.by' fill white text 1,0 'www.slk.by' » converted/`basename "$i" .JPG`.jpg && \
exiftool -overwrite_original -Copyright='www.slk.by' converted/`basename "$i" .JPG`.jpg
done
exiftran is a command line utility to transform digital image jpeg
images. It can do lossless rotations like jpegtran, but unlike
jpegtran it cares about the EXIF data: It can rotate images
automatically by checking the exif orientation tag, it updates the
exif informaton if needed (image dimension, orientation), it also
rotates the exif thumbnail. It can process multiple images at once.
2.
#!/bin/sh
mkdir converted
#for i in *.[nN][eE][fF]
for i in *.[jJ][pP][gG]
#for i in *.[pP][pP][mM]
do
convert $i -resize 800x600 -font helvetica -pointsize 16 -draw «gravity SouthEast fill gray text 0,1 'www.slk.by' fill white text 1,0 'www.slk.by' » converted/`basename "$i" .JPG`.jpg && \
exiftool -overwrite_original -Copyright='www.slk.by' converted/`basename "$i" .JPG`.jpg
done
Для работы с Пикасой из командной строки можно использовать утилиты проекта googlecl. С помощью этих утилит можно и закачивать фотографии в альбом, и получать всю необходимую информацию.
Получить список всех фотографий из альбома можно примерно такой командой:
Вывод получается такой (показываю только одну строку):
Как вы понимаете, распарсить эту строку проще простого. Плюс в том, что если озаботиться добавлением описания фотографии в Пикасе, то галерею для блога можно формировать полностью автоматически — описания подставятся сами. Если описания нет, в поле summary будет стоять
Для получения адреса preview нужно немного подправить полученный урл — перед именем файла добавить название папки вида
Это тоже прекрасно автоматизируется :)
Получить список всех фотографий из альбома можно примерно такой командой:
google picasa list --fields title,url,url-direct,summary "Боброво, 31.07-07.08.2010"
Вывод получается такой (показываю только одну строку):
IMG_1781.JPG,https://picasaweb.google.com/114460296623519085576/310707082010#5503164146046045314,http://lh3.ggpht.com/-JsZrrcj1wa0/TF8qokG9jII/AAAAAAAAEvQ/GXHGUE3VX48/IMG_1781.JPG,Лицо. Вообще это какая-то щавельница (я не запомнил точное название).
Как вы понимаете, распарсить эту строку проще простого. Плюс в том, что если озаботиться добавлением описания фотографии в Пикасе, то галерею для блога можно формировать полностью автоматически — описания подставятся сами. Если описания нет, в поле summary будет стоять
None
.Для получения адреса preview нужно немного подправить полученный урл — перед именем файла добавить название папки вида
s<размер по длинной стороне>
. То есть если нужна превьюшка файла из моего примера с размером 345px, урл должен стать таким:http://lh3.ggpht.com/-JsZrrcj1wa0/TF8qokG9jII/AAAAAAAAEvQ/GXHGUE3VX48/s345/IMG_1781.JPG
Это тоже прекрасно автоматизируется :)
Я на все JPEG-файлы натравливаю скрипт fromcam, который:
1. Переименовывает примерно так: 2011-09-12 13:14:15 DSC_1235.jpg
2. Выполняет поворот «портретных» фотографий.
3. Добавляет JPEG Comment с моим копирайтом.
Дополнительно есть вариации скрипта fromcam-others (для чужих фотографий), и fromcam+1 и fromcam-1, которые корректируют время съёмки на +1 час или -1 час, соответственно.
Ещё есть скрипт forweb <качество JPEG> <макс. ширина> <макс. высота>, который уменьшает фотки с шарпингом, очень удобно, когда нужно по сети передать большую кучу фотографий и допустимо их уменьшить.
Самих скриптов под рукой нету, но если кто-то хочет посмотреть, то черкните комментарий, потом выложу.
1. Переименовывает примерно так: 2011-09-12 13:14:15 DSC_1235.jpg
2. Выполняет поворот «портретных» фотографий.
3. Добавляет JPEG Comment с моим копирайтом.
Дополнительно есть вариации скрипта fromcam-others (для чужих фотографий), и fromcam+1 и fromcam-1, которые корректируют время съёмки на +1 час или -1 час, соответственно.
Ещё есть скрипт forweb <качество JPEG> <макс. ширина> <макс. высота>, который уменьшает фотки с шарпингом, очень удобно, когда нужно по сети передать большую кучу фотографий и допустимо их уменьшить.
Самих скриптов под рукой нету, но если кто-то хочет посмотреть, то черкните комментарий, потом выложу.
...forweb ещё EXIF удаляет, на всякий случай.
С файлами, у которых в имени двоеточие, потом не удобно работать под Windows
Некоторые фотоаппараты можно настроить так, чтоб они писали в комментарий в EXIF (почти) произвольный текст. Например, Nikon D40 пишет латинским буквами, цифрами и знаками препинания; размер поля — около 40 символов, на имя с адресом сайта вполне может хватить.
Снимаю time lapse видео, для генерации превьюшек видео из кучи фотографий написал скриптик lapse.
mencoder «mf://*.JPG» -mf fps=30 -o "$1".avi -ovc lavc -vf scale=800:600 -lavcopts vcodec=msmpeg4v2:vbitrate=2000
Запуск lapse test сгенерит файл test.avi.
Пример результата dl.dropbox.com/u/4494944/v/lapse7-600-2k.avi (4МБ)
mencoder «mf://*.JPG» -mf fps=30 -o "$1".avi -ovc lavc -vf scale=800:600 -lavcopts vcodec=msmpeg4v2:vbitrate=2000
Запуск lapse test сгенерит файл test.avi.
Пример результата dl.dropbox.com/u/4494944/v/lapse7-600-2k.avi (4МБ)
mogrify -resize 1000 *.jpg
Потрясающе, на что идут люди, чтобы не пользоваться каталогизаторами фотографий.
А каталогизатор-то тут при чём? Никто не запрещает им пользоваться для организации фотографий в некую структуру. И обрабатывать их скриптами при необходимости.
При том, что каталогизатор может выполнить всю эту работу без нагромождения скриптов.
По природе своей скрипты более гибки, т.к. юзер может использовать только те, что нужны ему, и при этом не продираться мышью через тучи галочек и кнопочек универсальных мегапрограмм.
Ну ладно, а есть ли каталогизатор, который делает хотя бы всё то, что описано в этом топике и в комментах? :)
Ну ладно, а есть ли каталогизатор, который делает хотя бы всё то, что описано в этом топике и в комментах? :)
Lightroom может переименовывать файлы по любой маске, вставлять копирайты и прочее.
А юзер скрипты не может использовать по определению.
А юзер скрипты не может использовать по определению.
Мы тут Linux вообще-то рассматриваем. Ради элементарных действий предлагаете запускать Lightroom под Wine (а будет ли работать)? Или вообще в виртуальной машине?
С толкованием термина «юзер» тоже можно поспорить. Но лучше не стоит, чтобы не уходить в жёсткий оффтопик.
С толкованием термина «юзер» тоже можно поспорить. Но лучше не стоит, чтобы не уходить в жёсткий оффтопик.
Lightroom это та программка, которой пользуются те, кто о CaptureOne не знает?
Для некоторых действий скрипты удобнее во много раз.
Для некоторых действий скрипты удобнее во много раз.
Потрясающее, сколько кликов мышкой делают люди, чтобы не учить команды консоли :)
Некоторое время назад написал GUI обертку для convert, возможно кому пригодится: Simple Images Converter.
P.S. Она не призвана заменить скрипты, у всего свои цели.
P.S. Она не призвана заменить скрипты, у всего свои цели.
еще есть десктопный phatch.org
Очень хорош.
Очень хорош.
Sign up to leave a comment.
Командная строка на службе фотографа-линуксоида