Показаны сообщения с ярлыком imagemagick. Показать все сообщения
Показаны сообщения с ярлыком imagemagick. Показать все сообщения

понедельник, 13 октября 2008 г.

Сортируем фотки

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

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

# mkdir small
# for i in *.JPG; do echo $i; convert -resize 50% -quality 70% $i small/$i; done

Запускаем из директории с кипой фотографий. При этом создаётся поддиректория small и в неё помещаются копии фотографий с 50% размером от оригинала и 70% качеством (у оригиналов около 95%)
Файлы получаются достаточно маленькие для быстрого листания их туда сюда в попытке выяснить что оставить, а что удалить.
Заходим в поддиректорию small, запускаем свой любимый просмотрщик картинок(мне, например, нравится gwenview, так как у него есть просмотр миниатюр файлов в директории). Запускаем, и начинаем удалять ненужное. Обычно урезанного качества хватает, что бы понять, какая фотография лучше а какая должна отправиться в корзину. В противном случае придётся посмотреть на оригиналы.

Итак, набор маленьких фотографий урезан. Теперь пришло время синхронизировать его с оригинальным набором.

# cd ..
# mkdir 2erase
# for i in *.JPG; do [[ ! -e small/$i ]] && mv $i 2erase/$i; done

Т.е. выходим в директорию с оригиналами, создаём поддиректорию 2erase, куда мы положим оригиналы, предназначенные для удаления(сразу удалять страшновато, но смелые могут и попробовать) и синхронизируем директории. Для каждого оригинала проверяем наличие "двойника" в small поддиректории. Если его нет - удаляем.

Вот и всё.

P.S. Ещё команда, для изменения регистра имен файла. Мой фотоаппарат почему-то считает, что IMG_7746.JPG выглядит лучше чем img_7746.jpg. Но я уверен в обратном:

# for i in *.JPG; do
newname=$(echo $i | tr '[:upper:]' '[:lower:]')
mv "$i" "$newname"
done

четверг, 21 августа 2008 г.

Обрабатываем фотографии для блога

Последние 2 поста были прямо таки нашпигованы фотографиями. Разумеется, все они прошли некоторый осмотр и обработку:
1. Коррекция уровней
2. Кроп
3. Увеличение резкости
4. Изменение размера до 33%
5. Уменьшение качества до 80-85%
Последние 2 пункта нужны, чтоб не выкладывать 2-х мегабайтные файлы на блог. Кому они нужны, это же не "шыдевры"? После такой обработки фотографии весят около 200 кБ, что вполне приемлимо.
Первые 3 пункта разумеется нужно делать руками под неусыпным контролем, но вот последние 2... Их просто таки необходимо автоматизировать. Чем? Да вот хотябы imagemagick.
Вобщем, всё просто - будем использовать программу convert или modrify. Первая записывает результат в новый файл, а вторая меняет поданный на вход файл, что удобно и страшно.
Отконвертировать все jpg:
for i in *.jpg; do modrigfy -resize 33% -quality 85% $i; done

или, что боле безопасно
for i in *.jpg; do convert -resize 33% -quality 85% $i new-$i; done


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

понедельник, 3 марта 2008 г.

Приклеивание лого

Некоторые люди любят приклеивать на скриншоты логотип. Чтоб не спёрли, видимо (хотя всё равно ведь сопрут...)
Разумеется это дело можно и даже нужно автоматизировать.
Для этого нам понадобятся 2 программы.
для создания логотипа - gimp
для приклеивания оного - imagemagick
Оба бесплатны и работают под Linux и Windows

I. Создание логотипа.

0. Скачиваем и инсталлируем GIMP

1. Создаём в GIMP картинку и с помощъю инструмента Text создаём надпись желаемого цвета и размера.


2. Удаляем фоновый слой


3. Сжимаем картинку до размера слоя с надписью.


4. Сохраняем как PNG


II. Приклеивание логотипа

0. Скачиваем и инсталлируем ImageMagick

1. Используем его:
composite -gravity SouthEast logo.png input.png output.png
-gravity SouthEast сообщает к какой стороне картинки прилепить логотип. в данном случае к нижнему правому углу.

для группы файлов это будет выглядеть в Linux так:
# for i in *.png; do composite -gravity SouthEast logo.png $i $i.with-logo.png; done

если есть несколько логотипов, и хочется для каждой картинки выбирать тот, что лучше подходит, можно создать все комбинации, а потом удалить не нужное:
# for l in logo/*; do for i in images/*; do composite -gravity SouthEast $l $i $l.$i; done; done

P.S. Надёюсь никто не забыл, что скриншоты лучше делать в png ?