Журнал LinuxFormat - перейти на главную

LXF105:Манипулируем фото

Материал из Linuxformat
Перейти к: навигация, поиск
Фотография: Программы, советы и технологии цифровой фотографии

Содержание

Фотография: Linux-студия

ЧАСТЬ 4: В последней статье серии, Дейл Стрикленд-Кларк раскрывает секреты применения командной строки для обработки изображений и вводит нас в чудесный мир HDR.

Что-о? Обработка изображений из командной строки? Да вы в своем уме? Ведь так ни настроить цветовой баланс, ни затереть ненужное, ни кадрировать изображение – его же не видно на экране! Что ж – всё правда; но есть и иные, весьма общие изменения, которые фотографам надо вносить в свои снимки, причём сразу во множество.. А командная строка Linux не теряет скорости и гибкости, с какими файлами ни работай; и на сей раз они будут графическими. На данном уроке мы рассмотрим, как фотографы решают самые частые задачи с помощью оболочки, а затем, в порядке финального аккорда, создадим изображение HDR (high dynamic range – высокий динамический диапазон) из четырех фотографий, снятых обычной цифровой камерой.

Вы, наверное, в курсе, что и ваша камера, и множество программредакторов хранят вместе с изображением текстовую информацию, известную как «данные Exif». (Строго говоря, данные Exif – только один частный случай того, что называют метаданными изображения.) Эту информацию можно читать и обогащать. Возможно, вы захотите пометить изображения в своей библиотеке, указав ключевые слова, место съемки и иную информацию – например, сведения об авторских правах. Сохранив эти данные в поле Exif, вы обеспечите их прикрепление к изображению, даже если снимок будет перемещен.

Exiftool

Швейцарский нож для работы с данными Exif – утилита exiftool. Если вы хотите просмотреть всю информацию из Exif, связанную с изображением, просто скомандуйте:

> exiftool imgp4515.pef

(PEF – формат Pentax RAW, но с тем же успехом можно указать JPEG или любой другой из массы поддерживаемых форматов.) Как правило, это даст вам более 100 строк информации, сохраняемой с изображением; она выводится просто в виде пар item : value [объект : значение] в каждой строке. Начало будет примерно таким:

 ExifTool Version Number                       : 6.90
 File Name                                     : imgp4515.pef
 Directory                                     :.
 File Size                                     : 13 MB
 File Modification Date/Time                   : 2008:02:16 15:47:08
 File Type                                     PEF
 MIME Type                                     : image/x-raw
 Image Width                                   : 3040
 Image Height                                  : 2024
...

Если вам нужны всего несколько конкретных объектов, можете определить их как аргументы, удалив пробелы из названий и набрав последние маленькими буквами.

 > exiftool -exposuretime -aperture imgp4515.pef
 Exposure Time : 1/350
 Aperture : 8.0
 >

[Exposure Time – выдержка, Aperture – диафрагма.] Чтобы добавить в файл собственные ключевые слова, используйте опцию -keywords, которую придется повторять для каждого нового ключевого слова.

 > exiftool -keywords=star -keywords=pub -keywords=hdr
 imgp4515.pef
 1 image files updated
 >

Можно избежать этой нудной работы, использовав функцию Bash под названием ‘brace expansion’ [раскрытие скобок]. Следующая команда полностью эквивалентна предыдущей, а части вне скобок повторяются для каждого перечисленного слова.

 exiftool -keywords={star,pub,hdr} imgp4515.pef
 1 image files updated
 >

Чтобы убедиться, что скобки раскрыты правильно, поставьте перед всей командой префикс echo, и Bash будет не выполнять команду, а печатать ее:

 echo exiftool -keywords={star,pub,hdr} imgp4515.pef
 exiftool -keywords=star -keywords=pub -keywords=hdr imgp4515.
 pef
 >

Помимо ключевых слов, можно добавлять или обновлять другие данные – например, место съемки и уведомление об авторских правах:

 exiftool -copyright=”(C) 2008 Dale Strickland-Clark” -
 location=Berkshire imgp4515.pef
 1 image files updated
 >

Для вывода полного списка используйте опцию -list. Опция -listw выведет поля, доступные для записи.

По значению Exif можно также выбирать файлы для обработки. Вот как применить команду ufraw сразу ко всем изображениям с ключевым словом ‘pub’:

 > exiftool -q -p ‘ufraw “$filename”’ -if ‘$keywords =~ /\bpub\b/’  *.pef | bash -
 >

Для каждого PEF-файла в текущей директории, удовлетворяющего условию в опции -if, выведется строка, определенная опцией -p. Мы применяем регулярное следует выражение Perl, которое проверяет, имеется ли в ключевых словах слово ‘pub’ (обрамленное с обеих сторон небуквенным символом – \b). Строка в -p – это команда ufraw, за которой следует имя файла, соответствующего условию. Команды передаются в оболочку Bash и выполняются. Опция -q подавляет лишние информационные сообщения из exiftool.

Здесь понадобится знание и тэгов Exif, и регулярных выражений Perl, и синтаксиса Bash и exiftool; но когда вы все это освоите, в вашем распоряжении окажется потрясающе мощный инструмент.

Редактируем, не прикладая рук

Многие читатели знакомы с редактированием изображений с помощью мыши или графического планшета. В числе преимуществ данных способов – немедленная реакция на ваши действия; а недостаток тот, что рутинные действия плохо поддаются автоматизации. Некоторые задачи куда проще передать компьютеру, и тут на помощь приходит ImageMagick – набор команд для работы с изображениями. В отличие от exiftool, работающей с метаданными, ImageMagick работает с самой картинкой. Он может читать и записывать десятки файловых форматов, и является самым быстрым способом сделать самую разную работу.

Вот самые полезные команды в этом пакете:


  • convert Изменяет одно или более изображений и создает новые. Настоящая рабочая лошадка.
  • display Выводит на экран изображение или их последовательность.
  • identify Выводит данные о формате изображения, его размере и структуре
  • mogrify Изменяет одно или более изображений и заменяет исходные изображения на то, что получилось в результате.
  • montage Объединяет несколько изображений в одно.

Здесь мы используем команду convert, чтобы создать миниатюрное изображение JPEG шириной 200 пикселей из более крупного изображения PPM. Высота будет настроена автоматически, чтобы сохранить пропорции оригинала.

> convert imgp4515.ppm -resize 200 imgp4515.jpg
>

Если вы хотите создать миниатюрные копии многих изображений, можете включить команду convert в небольшой скрипт Bash:

mkdir thumbs
for f in *.ppm; do
  convert $f -resize 200 thumbs/${f%%ppm}jpg
done

Мы перебираем все файлы,