Код: Выделить всё
#!/bin/bash
#
# Author: http://yozhek10nozhek.livejournal.com/
# You must keep the link to my LJ when copying this script.
#
[ -z "$PICDIR" ] || unset "$PICDIR"
[ -z "$SMALLPICDIR" ] || unset "$SMALLPICDIR"
[ -z "$EXT" ] || unset "$EXT"
[ -z "$DIFFRES" ] || unset "$DIFFRES"
[ -z "$DESTRES" ] || unset "$DESTRES"
[ -z "$SRCRES" ] || unset "$SRCRES"
EXT="jpg"
PICDIR=`kdialog --title "Выбери папку с картинками" --getexistingdirectory .`
SMALLPICDIR=`kdialog --title "Название папки" --inputbox "Введи название папки, в которую мы будем
складывать уменьшенные картинки.
small - вполне неплохой вариант" "$PICDIR/small"`
cd "$PICDIR"
TOTAL=`ls -1 *.$EXT | wc -l`
# Такая папка уже есть
if [ -d "$SMALLPICDIR" ]
then
if [ -w "$SMALLPICDIR" ]
then
kdialog --title "Вопрос возник" --yesno "Папка $SMALLPICDIR уже существует и доступна для записи. Складывать картинки в нее?"
if [ $? == 0 ]; then
set > /dev/null # nop
else
kdialog --error "ОК. Тогда я завершаюсь"
exit 1
fi
else
kdialog --error "Папка $SMALLPICDIR существует, но недоступна для записи. Я завершаюсь."
exit 1
fi
fi
mkdir -p "$SMALLPICDIR"
kdialog --title "Текст ниже;-)" --msgbox "Сейчас мы проверим разрешение всех картинок в папке $PICDIR"
# Проверяем разрешение картинок
dcopCheckRes=`kdialog --progressbar "Нажми Cancel, чтобы прервать" $TOTAL`
dcop $dcopCheckRes showCancelButton true
inc=0
resolutions=".resolutions"
[ -f "$resolutions" ] && rm -f "$resolutions"
touch "$resolutions"
for pic in *.$EXT
do
[ "true" == `dcop $dcopCheckRes wasCancelled` ] && break
res=`identify "$pic" | awk '{print $3}'`
echo "$pic" $res >> "$resolutions"
inc=$((`dcop $dcopCheckRes progress` + 1))
dcop $dcopCheckRes setProgress $inc
done
dcop $dcopCheckRes close
DIFFRES=`cat "$resolutions" | awk '{print $2}' | sort | uniq | wc -l`
if [ $DIFFRES -ge 2 ]
then
kdialog --title "Простите" --sorry "В папке некоторые картинки перевернутые, проверь и поверни их.\nВ следующем окошке будут показаны названия файлов и их разрешения."
kdialog --textbox "$resolutions" 440 500
exit 1
fi
# Пережимаем картинки
DESTRES=`kdialog --title "Введи разрешение для картинок" --inputbox "Укажи разрешение (например, 1024x768):" "1024x768"`
SRCRES=`head -1 "$resolutions" | awk '{print $2}'`
dcopResize=`kdialog --progressbar "Пережимаем картинки (складываем их в папку $SMALLPICDIR)" $TOTAL`
dcop $dcopResize showCancelButton true
inc=0
for pic in *.$EXT
do
[ "true" == `dcop $dcopResize wasCancelled` ] && break
convert -size "$SRCRES" "$pic" -resize "$DESTRES" +profile "*" "$SMALLPICDIR"/"$pic"
inc=$((`dcop $dcopResize progress` + 1))
dcop $dcopResize setProgress $inc
done
dcop $dcopResize close
kdialog --title "OK" --msgbox "Готово!"
cd "$OLDPWD"
exit 0