Pull to refresh

Comments 54

UFO landed and left these words here
> Кстати, может-ли кто-нибудь показать на BASH, как сделать такой простенький скрипт
> в одну строчку, чтобы у них не изменялись имена?

Использовать mogrify вместо convert.
закинет все в поддиректорию resized/

for PHOTO in *.[jJ][pP][gG]; do convert -resize 800x $PHOTO resized/$PHOTO; done
UFO landed and left these words here
UFO landed and left these words here
Кавычки не забудьте!

for PHOTO in *.[jJ][pP][gG]; do convert -resize 800x "$PHOTO" «resized/$PHOTO»; done
Всем ли так нужна консоль? Не лучше ли пользоваться XnView MP с человеческим интерфейсом? Вьювер, каталогизатор и вообще комбайн, приятный и отшлифованный UI, есть гибкие возможности по пакетной обработке, поддерживает тьму форматов.
UFO landed and left these words here
У ней как бы иное предназначение. Сомневаюсь, что многие фотографы одновременно являются настолько гиками, что захотят заморачиваться с консольными утилитами, хостингами и API.
А вообще тот же разработчик предлагает консольный NConvert, если кому-то ImageMagick не нравится.
UFO landed and left these words here
Хм. если на фотике стоит никсовая система, к кому причислить их владельцев.
Это что за фотик такой? Телефон с Андроидом? :)
Кстати, nconvert действительно хорошая штука, пользовался им.
Но сходу не вспомню — в чём он реально опережает ImageMagick.
ну например, я перешел на imagemagic из-за функции smart-resize (уменьшение картинки по БОЛЬШЕЙ стороне)
Консоль не заменяет UI-приложения, но удачно их дополняет. Когда я сливаю фотографии с карточки в mc и запускаю скрипт для стандартной подготовки, это происходит очень быстро, с минимумом кликов и зрительного напряжения и при этом трудно ошибиться. С UI-программами — надо запустить прогу, найти каталог, выбрать правильные файлы, выбрать нужное действие… а скрипт уже давным-давно всё закончил.
Только XnView долгие годы развивали лишь виндовую версию, а под линуксом и FreeBSD была доступна лишь страшная 1.70.
XnView MP переписывается с нуля под Qt, если вы не заметили, и в недалёком будущем будет иметь все достижения Windows версии
Часто использую mogrify для ужатия фоток и jhead для поворота по EXIF:
mogrify -resize 640 *.jpg
jhead -autorot *.jpg
Похоже, вторая команда — именно то, что я запрашивал в комменте ниже :) Спасибо.
Кстати, ещё две идеи для фотоскриптов:
1) Я ещё не разобрался в причине, но некоторые сайты, принимающие к загрузке фото, не поворачивают вертикально ориентированные картинки согласно ориентации в EXIF. Приходится делать это вручную в GIMP. А вот был бы скрипт, который можно натравливать на директорию со всеми фотками — было бы хорошо.
2) Скрипт для впечатывания копирайта. С горизонтальными снимками всё просто — ставь в какой-нибудь угол заранее определённый, и ладно. Правда, там может оказаться светлая область — тогда бы неплохо тёмным текстом написать, вот тоже задачка :) А вот на вертикальных как ставить — это тоже вопрос, в другой какой-то угол или вдоль вертикальной стороны повёрнутым… В любом случае скрипт должен ориентацию отслеживать.
Погуглить религия не позволяет? Всё есть в примерах к ImageMagick.

1. Тыц, читать весь раздел, там есть ссылка на программу JHead.
2. Тыц. Технология простая — берём png-файл и накладываем его на картинку в нужном месте.

Почитайте документацию и посмотрите примеры, там мноого интересного.
Так я ж просто идеями делюсь в данном комменте :)
По п.1 мне уже подсказали.
По п.2 технология как раз понятна, идея заключалась в том, чтобы написать мега-скрипт, который ставит картинку в разные места в зависимости от ориентации снимка, и разными цветами — в зависимости от фона.
Обычно народ не парится и делает либо так:

image

либо так:

image

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

#!/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) такой скрипт есть. Я давно использую на своем сайте, безмерно благодарна автору. Думаю, если поковыряться в нем — можно для консоли сделать аналог.
Думаю, лучше будет выглядеть текст, как на рабочем столе, вроде, любой системы (тонкая обводка белого текста черным цветом и небольшая тень)
UFO landed and left these words here
А вот об этом — следующий топик. С примерами кода (и автоматический поворот, и подписывание) да ссылкой на гитхаб, откуда можно взять готовые скрипты.
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
О, тут ещё и текст консольно рисуется, хорошая идея :)
Для работы с Пикасой из командной строки можно использовать утилиты проекта googlecl. С помощью этих утилит можно и закачивать фотографии в альбом, и получать всю необходимую информацию.
Получить список всех фотографий из альбома можно примерно такой командой:

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> <макс. ширина> <макс. высота>, который уменьшает фотки с шарпингом, очень удобно, когда нужно по сети передать большую кучу фотографий и допустимо их уменьшить.

Самих скриптов под рукой нету, но если кто-то хочет посмотреть, то черкните комментарий, потом выложу.
...forweb ещё EXIF удаляет, на всякий случай.
С файлами, у которых в имени двоеточие, потом не удобно работать под Windows
На самом деле, там его нету, просто я ошибся, а исправить нельзя :)

2011-09-12 131415 DSC_1235.jpg
Некоторые фотоаппараты можно настроить так, чтоб они писали в комментарий в EXIF (почти) произвольный текст. Например, Nikon D40 пишет латинским буквами, цифрами и знаками препинания; размер поля — около 40 символов, на имя с адресом сайта вполне может хватить.
У меня в хозяйстве 7 фотографирующих девайсов, причём ими пользуются разные люди.
Снимаю 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МБ)
Ух ты. Круто. В свое время искали на работе способ сделать видео из картинки (чтоб рекламу простенькую транслировать). Там в конце концов в ход пошли тяжелые видеоредакторы, а тут вон оно как просто.
Потрясающе, на что идут люди, чтобы не пользоваться каталогизаторами фотографий.
А каталогизатор-то тут при чём? Никто не запрещает им пользоваться для организации фотографий в некую структуру. И обрабатывать их скриптами при необходимости.
При том, что каталогизатор может выполнить всю эту работу без нагромождения скриптов.
По природе своей скрипты более гибки, т.к. юзер может использовать только те, что нужны ему, и при этом не продираться мышью через тучи галочек и кнопочек универсальных мегапрограмм.

Ну ладно, а есть ли каталогизатор, который делает хотя бы всё то, что описано в этом топике и в комментах? :)
Lightroom может переименовывать файлы по любой маске, вставлять копирайты и прочее.

А юзер скрипты не может использовать по определению.
Мы тут Linux вообще-то рассматриваем. Ради элементарных действий предлагаете запускать Lightroom под Wine (а будет ли работать)? Или вообще в виртуальной машине?

С толкованием термина «юзер» тоже можно поспорить. Но лучше не стоит, чтобы не уходить в жёсткий оффтопик.
Lightroom это та программка, которой пользуются те, кто о CaptureOne не знает?

Для некоторых действий скрипты удобнее во много раз.
LR vs C1 vs Aperture это такой же холивар, как *nix vs Mac vs Win. С1 не лучше и не хуже других. Каждому свое.
Потрясающее, сколько кликов мышкой делают люди, чтобы не учить команды консоли :)
Некоторое время назад написал GUI обертку для convert, возможно кому пригодится: Simple Images Converter.

P.S. Она не призвана заменить скрипты, у всего свои цели.
Sign up to leave a comment.

Articles