BRAZHKO.info

Блог о компьютерном железе и IT-технологиях

Пакетное преобразование фотографий

| комментария 3

Есть папка с фотографиями с цифровой камеры (JPG, 3072×2048). Необходимо уменьшить все фото для публикации на сайте, например до 1536×1024. Допустим фотографий 50 шт. Можно сделать вручную. Но мы не ходим такими путями 🙂 Т. к. необходимость уменьшения фоток возникает периодически, для решения задачи был написан маленький скрипт (назовём его conv.sh) с использованием утилиты convert:

#!/bin/sh
for i in $ls./*.jpg $ls./*.JPG
do
if [ -f "$i" ] then convert "$i" -resize 1536x1024 -quality 85 "$i"
fi
done

Скрипт запускаю в папке с фотографиями, которые нужно преобразовать, просто

$conv.sh

Будьте внимательны: при работе скрипта оригиналы фотографий перезапишутся уменьшенными копиями. Мне так удобнее – я сначала копирую фотки туда, куда мне нужно, а затем запускаю скрипт.

Как сделать по-другому читайте здесь.

При желании скрипт можно расширить для работы с несколькими разрешениями. Получится примерно так:

#!/bin/sh
case "$1" in
1)
size="1152x768"
;;
2)
size="1536x1024"
;;
3)
size="1920x1280"
;;
*)
echo "Script for converting photos to lower dimension --> Usage: conv.sh {1|2|3}"
echo "1 = 1152x768"
echo "2 = 1536x1024"
echo "3 = 1920x1280"
exit 1
esac

for i in $ls./*.jpg $ls./*.JPG
do
if [ -f "$i" ] then convert "$i" -resize $size -quality 85 "$i"
fi
done

И для моего случая команда будет выглядеть следующим образом:

$conv.sh 2

3 комментария

  1. такой метод имеет кучу плюсов! и мне нравится!
    1. баш скрипты пашут очень быстро
    2. нет необходимости запускать GUI-приложения

  2. у меня при запуске приложения пишет ошибка! не могу прочитать переменную, нет такой переменной ls…
    не могли бы вы объяснить подробнее как написан скрипт?

  3. Заходим в папку с фотографиями и запускаем скрипт. Он обрабатывает поочередно все файлы с расширением jpg и JPG в текущей папке. Если нужны еще какие-то, то необходимо их дописать, например
    for i in $ls./*.jpg $ls./*.JPG $ls./*.tif $ls./*.TIFF

Добавить комментарий

Войти с помощью: 

Обязательные поля отмечены *.