Как-то раз, вернувшись домой после очередной прогулки с фотоаппаратом, мне нужно было отослать некоторые и фотографий на мыло моей девушке.Однако, даже при небольшом разрешении моего фотоаппарата (5 MPx) фотографии получаются довольно громоздкими - больше 2 Мб. Немножко погуглив я нашел утилитку convert из пакета ImageMagick, которая очень многое умеет, в том числе и ковертировать файлы по разрешению.
Только вот по одному файлу конвертировать слишком долго и я написал скрипт использующий convert и позволяющий конвертировать все *.jpeg файлы из нужной папки.
Синтаксис следующий:
~$: ./jpeg_conv source_dir target_dir width quality
source_dir - директория с исходными картинками. По умолчанию - текущая.
target_dir - директория, где будут созданны измененные изображения. Создается автоматически. По умолчанию, в исходной папке с картинками создается папка converted_image.
width - ширина получившихся файлов в пикселях. Высота высчитывается автоматически, картинка масштабируется. По умолчанию - 1024px.
quality - качество получаемых картинок. По умолчанию - 50.
Ну и собственно пример:
~$ ./jpeg_conv ~/myphoto ~/my_little_photo 640 40
И, разумеется, сам код:
Quote
1.
#!/bin/sh
2.
3.
#-----здесь мы определяем есть ли исходная директория(первый параметр).
4.
#-----Eсли нет, исходной считается текущая
5.
if [ -z $1 ]
6.
then
7.
from_directory=`pwd`
8.
else
9.
from_directory=$1
10.
fi
11.
12.
#-----определяем, указана ли папка назначения(второй параметр).
13.
#-----Если нет, то в исходной папке создается каталог с именем converted_image
14.
if [ -z $2 ]
15.
then
16.
to_directory=$from_directory/converted_image
17.
else
18.
to_directory=$2
19.
fi
20.
21.
#-----Указана ли ширина изображения(третий параметр).
22.
#-----Если нет, то ширина по умолчанию - 1024
23.
if [ -z $3 ]
24.
then
25.
width="1024"
26.
else
27.
width=$3
28.
fi
29.
#-----Указано ли качество будущего изображения(четвертый параметр), если нет то
30.
#-----принимается равным - 1024
31.
if [ -z $4 ]
32.
then
33.
q_image=50
34.
else
35.
q_image=$4
36.
fi
37.
38.
mkdir $to_directory #создаем директорию куда будем сохраняь файлы
39.
for i in $from_directory/* #получаем полный путь к файлам из исходной директории
40.
do
41.
test_file=`file -b -i $i` #получаем тип файлы
42.
if [ "image/jpeg" = $test_file ]
43.
then
44.
#извлекаем имя файла
45.
file_name=`basename $i`
46.
#конвертируем в другое разрешение и сохраняем
47.
convert $i -resize $width -quality $q_image $to_directory/$file_name
48.
#выводим сообщение
49.
echo $from_directory/$file_name converted to $to_directory/$file_name
50.
fi
51.
done
Скачать скрипт можно отсюда или в приложении к посту) Сохраняем его в нужную папку, потом присваиваем права для запуска:
~$ chmod 755 jpeg_conv
И можно пользоваться)))
Разумеется что для работы скрипта необходим ImageMagick. Надеюсь, что сия поделка кому-то будет полезной, особенно начинающим).