вторник, 28 июня 2011 г.

Изменение размеров фотографий

Столкнулся с небольшой задачей по изменеию размеров фотографий. Т.е. задача достаточно стандартная для многих, когда нафотографированное надо немного уменьшить для публикации где-н.
Решение достаточно простое – можно воспользоваться утилитой convert из пакета imagemagic.
Установить можно приведенной ниже командой или через Центр приложений


apt-get install imagemagick

Теперь для изменения размеров изображения можно воспользоваться следующей командой:


convert -resize 800x600 foto1.jpg small_foto1.jpg

В приведенном примере изображение foto1.jpg сжимается до 800×600 точек и результат сохраняется в файл small_foto1.jpg. Это минимальное количество параметров, которые нам нужны (в справке указано значительно больше параметров, которые позволяют творить с картинками все что хотите).

Для массовой обработки фотографий было решено написать небольшой скрипт, который просматривает текущий каталог и ищет файлы заданного типа. Найденные файлы обрабатываются и складываются во временный каталог.


#!/bin/bash
#Имя временного каталога с результатами обработки
tmpdir="tmp"
 
size="800x600"
#Раширение имени файлов
ext="JPG"
#Если временного каталога нет, то создаем его
if [ ! -d "$tmpdir" ]; then
  mkdir $tmpdir
fi
#Пробегаем по файлам и отбираем только те, которые подходят по расширению
for filename in *                # Обход всех файлов в каталоге.
do
#Если найден файл заданного типа, то
if [ "${filename##*.}" = "$ext" ]
then
#изменяем его размеры
convert -resize $size $filename ./$tmpdir/$filename
fi
done

Теперь достаточно кинуть этот скрипт в каталог с фотографиями и запустить его.

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