Open-Club.Net Проект полностью ориентирован на Open Source-подход(изучаем, настраиваем, устанавливаем и общаемся о Linux).
Мы в соц. сетях:
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Конвертирование *.jpeg файлов в другое разрешение в Linux
DiselДата: Вт, 14.07.2009, 21:09 | Сообщение # 1
Генерал-лейтенант
Группа: Бывалый
Сообщений: 489
Как-то раз, вернувшись домой после очередной прогулки с фотоаппаратом, мне нужно было отослать некоторые и фотографий на мыло моей девушке.Однако, даже при небольшом разрешении моего фотоаппарата (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. Надеюсь, что сия поделка кому-то будет полезной, особенно начинающим).


 
  • Страница 1 из 1
  • 1
Поиск:
Новый ответ
Имя:
Текст сообщения:
Код безопасности: