Скрипт для изменения размера картинок

Модератор: Модераторы разделов

Аватара пользователя
DjSpike
Сообщения: 2265
Статус: в поисках истины
ОС: Lubuntu 12.04

Скрипт для изменения размера картинок

Сообщение DjSpike »

Поставили задачу изменить размер у очень большого числа картинок. Нашел в интернете скрипт, но он написан как я понял под KDE3, кто может его подредактировать чтобы он работал в KDE4, или предложите что нибудб получше.

Код: Выделить всё

#!/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
AvReg - По для организации Видеонаблюдения на Linux.
ДЭНСИ:КАССА - Рабочее место кассира под Linux.
Терминальные решения под Linux
Консультации по установке 1с+PostgreSQL+Ubuntu.
Спасибо сказали:
alfss
Сообщения: 262

Re: Скрипт для изменения размера картинок

Сообщение alfss »

http://www.imagemagick.org/script/perl-magick.php
Resize geometry=>geometry, width=>integer, height=>integer, filter=>{Point, Box, Triangle, Hermite, Hanning, Hamming, Blackman, Gaussian, Quadratic, Cubic, Catrom, Mitchell, Lanczos, Bessel, Sinc}, support=>double, blur=>double scale image to desired size. Specify blur > 1 for blurry or < 1 for sharp


http://www.imagemagick.org/script/command-...ions.php#resize
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Скрипт для изменения размера картинок

Сообщение drBatty »

DjSpike писал(а):
23.06.2009 10:14
Поставили задачу изменить размер у очень большого числа картинок.

зачем такой сложный скрипт нашли? или в условие задачи входит и переворачивание? и куча табличек?
тогда вместо kdialog пишите gmessage, или вообще, xmessage. у них параметры другие, потому мануал почитать надо.
а вообще это 2мя командами решается:
1) find чтоб найти(ключик -exec)
2) ну и что там у вас - для ресайза.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: