Практические занятия

Есть каталог с фотографиями. Требуется повернуть каждое изображение в соответствии с положением камеры при съемке (некоторые цифровые фотоаппараты записывают информацию об ориентации снимка в EXIF-данные JPEG-файлов), а также изменить размер на 800х600.

Для работы с EXIF нам потребуется пакет jhead , а для изменения размера изображений - функция convert из набора инструментов ImageMagick . Заклинание для решения всех наших проблем выглядит следующим образом:

mkdir output; for FILE in *.jpg; do jhead -autorot “$FILE“; convert “$FILE“ -resize 800x600 “output/$FILE“; done

Несмотря на то что эта длинная команда пишется в одну строчку, она представляет собой полноценную мини-программу. В ней есть даже цикл (участок между do и done), перебирающий все jpg-файлы в текущем каталоге (их имена записываются в переменную $FILE). Авторы jhead уже позаботились об автоматическом повороте картинок (достаточно указать ключ -autorot), а команда convert умеет не только преобразовывать практически любые типы графических файлов в любые другие, но и обладает недюжинными познаниями в области обработки изображений, так что изменить размер снимка для нее - пара пустяков.

Оповестить пользователя звуковым сигналом о том, что появилась связь с Интернетом.

while [ -z “`ping -c 1 computerra.ru - grep 1\ received`“ ]; do sleep 1; done; aplay “`locate redalert.wav`“

В переводе на русский язык, эта строчка означает приблизительно следующее: если до сервера computerra.ru достучаться не удалось, нужно подождать одну секунду и повторить попытку; затем найти файл redalert.wav и проиграть его. При этом используются многие хитрости языка bash: обратные кавычки, перенаправление потоков ввода-вывода и неявный вызов команды test с помощью квадратных скобок, но подробный разбор синтаксиса остается за рамками данной статьи.




Перейти на страницу:
Изменить размер шрифта: