Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: bash script for image resize  (Прочитано 1789 раз)

0 Пользователей и 1 Гость просматривают эту тему.

ры

  • Автор темы
  • Гость
bash script for image resize
« : 08 Января 2009, 19:30:48 »
собственно, сабж. пытаюсь написать то, что изменяло бы размер всех .jpg в папке
загвоздка заключается в том, что не могу придумать, как из строки вида
IMG_6175.JPG JPEG 1936x1288 1936x1288+0+0 DirectClass 8-bit 620.77kb 0.180u 0:02
получить только 1936 и 1288

весь скрипт:
#!/bin/bash
for i in *.JPG;
do
SIZEX=$(identify $i | egrep -o '[0-9]+x' | egrep -o '[0-9]+')
SIZEY=$(identify $i | egrep -o 'x[0-9]+' | egrep -o '[0-9]+')
echo $SIZEX, $SIZEY;
if (test $SIZEX -ge $SIZEY);
then
  convert -size 600x399 $i -resize 600x399 $i;
else
  convert -size 399x600 $i -resize 399x600 $i;
fi
done
echo "all done, master";

строки
SIZEX=$(identify $i | egrep -o '[0-9]+x' | egrep -o '[0-9]+')
SIZEY=$(identify $i | egrep -o 'x[0-9]+' | egrep -o '[0-9]+')
возвращают по два раза
вроде
1936 1936
1288 1288
в следствии чего имеем
test: too many arguments

помогитеее :)

Оффлайн tinman321

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
    • Мир Линуксоида
Re: bash script for image resize
« Ответ #1 : 08 Января 2009, 19:53:43 »
ставишь imagemagick
делаешь: convert -resize 1024x768 *.jpg resized.jpg

ры

  • Автор темы
  • Гость
Re: bash script for image resize
« Ответ #2 : 08 Января 2009, 19:58:28 »
без imagemagick написанное мною не работало бы, кхе-кхе. он установлен
в скрипте я хочу чтоб в зависимости от того, вертикальная фотография или же горизонтальная, соответственно менялся размер и фото перезаписывалось

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
Re: bash script for image resize
« Ответ #3 : 08 Января 2009, 20:25:17 »
поскольку sed мне осиливать неизменно лень, я бы сделал через двойной cut:

1) вырезаем из строки третью колонку ("1936x1288"):
SIZE=$(identify $i | cut -f 3 -d ' ')
2) получаем длину и ширину из строчки "1936x1288":
SIZEX=$(echo $SIZE | cut -f 1 -d 'x')
SIZEY=$(echo $SIZE | cut -f 2 -d 'x')

ры

  • Автор темы
  • Гость
Re: bash script for image resize
« Ответ #4 : 08 Января 2009, 20:45:53 »
axe, спасибо!

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
Re: bash script for image resize
« Ответ #5 : 08 Января 2009, 20:57:26 »
пожалуйста! а вообще, можно узнать, зачем такие сложности? ведь как я понимаю, фотографии все одного размера (ну не считая ориентации), и ресайзятся тоже в один и тот же размер... или это упрощенная версия?

ры

  • Автор темы
  • Гость
Re: bash script for image resize
« Ответ #6 : 08 Января 2009, 20:59:27 »
когда как
иногда одного, иногда не одного :)

 

Страница сгенерирована за 0.066 секунд. Запросов: 25.