Преобразование форматов файлов
С помощью ImageMagick преобразование файла выполняется не сложнее, чем простая замена расширения имени файла, например:
1$ convert flower.jpg flower.png
Иными словами, для преобразования достаточно заменить расширение имени файла на расширение, соответствующее любому из поддерживаемых форматов (например, .png на .gif). Всего поддерживается около сотни различных форматов.
Мгновенное создание миниатюр
Создание миниатюр графических файлов в большинстве текстовых редакторов требует нескольких щелчков мышью. Это несложно, когда вам требуется обработать один или два файла, но когда их много, то последовательная обработка каждого файла вручную превращается в утомительное и трудоемкое занятие. ImageMagick существенно упрощает эту задачу. Рассмотрим следующую команду:
1$ convert flower.jpg -resize 50% flower50.jpg
Эта команда уменьшает размер файла flower.jpg на 50% и сохраняет результат в новом файле с именем flower50.jpg. Команда convert всегда создает новый файл, и последний аргумент представляет собой имя, которое вы присваиваете этому новому файлу. Рассмотрим еще одну команду:
1$ convert flower.jpg -resize 50×50 flower5050.jpg
Эта команда создает миниатюру файла flower.jpg размером 50×50. Комбинируя различные опции ImageMagick, вы можете, например, перемасштабировать графический файл и одновременно преобразовать его в другой формат, например:
1$ convert flower.jpg -resize 50% flower50.png
Вращение набора картинок
Вращение графического файла выполняется так же просто, как и преобразование формата или перемасштабирование. Рассмотрим пример, показанный на рис. 4.6. В данном случае картинка из файла flower.jpg была повернута на 30 градусов по часовой стрелке. Получившееся изображение будет больше, чем исходное, и, соответственно, и файл будет увеличен в размерах. Вращение выполняется следующей командой:
Разумеется, ситуации, когда вам захочется выполнить поворот вашей фотографии на 90 или 270 градусов, встречаются гораздо чаще. Тем не менее, полет вашей фантазии ничем не ограничен.
Добавление текстовых заголовков
Иногда в графический файл требуется добавить текстовый заголовок. Сделать это можно и в большинстве других редакторов с графическим пользовательским интерфейсом, благо они это позволяют. Но ImageMagick упрощает эту задачу до предела — особенно с учетом того, что один и тот же текст можно добавить к большому количеству графических файлов. Например, у вас может возникнуть желание добавить «водяной знак» (watermark), подзаголовок с названием альбома или уведомление об авторских правах на фотографию. Рассмотрим следующий пример:
1$ convert flower.jpg -draw ‘text 10,10 «Nifty Text!»‘ flowerNifty.jpg
Данная команда добавляет строку Nifty Text! в файл flower.jpg, причем координаты ее расположения (10,10) отсчитываются от верхнего левого угла. При желании вы можете изменить и начертание и размер шрифта (рис. 4.7). Чтобы сделать это, дайте следующую команду:
Приобретя достаточный опыт, вы сможете выполнять подобные операции над множеством файлов одновременно, практически не задумываясь.
Создание текстового баннера
Нет ничего проще, чем создать с помощью ImageMagick простой текстовый баннер. В этом случае команду convert можно использовать даже без аргумента, задающего имя исходного файла. Команда сама «синтезирует» файл с учетом переданных ей опций, например:
1234$ convert -size 200×40 xc:transparent -font Courier-Regular -pointsize 20 -channel RGBA -gaussian 0x6 -fill darkred -stroke magenta -draw ‘text 10,30 «My Nifty Banner!’ nifty-magick.png
Результат выполнения этой команды показан на рис. 4.8.
В рассматриваемом примере был создан прозрачный текстовый баннер размером 200×40, и с пурпурным текстом My Nifty Banner!, расположенным по указанным координатам (10,30). Поэкспериментировав, вы увидите, что команда convert предоставляет намного более широкие возможности, чем можно описать в этом коротком разделе.
Создание монтажа
ImageMagick имеет специальную команду для создания фотомонтажа, о чем несложно догадаться и по ее названию — montage. В дополнение к созданию монтажа вы можете задать для него фон, рамку и присвоить каждой картинке заголовок (рис. 4.9). Монтаж, показанный на этой иллюстрации, был получен следующей командой:
Рассматриваемая команда настолько проста, что почти не нуждается в пояснениях. Как несложно понять, она создает композицию из всех графических файлов с расширением .jpg, расположенных в текущем каталоге, на что указывает аргумент *.jpg. Результирующая композиция имеет серый фон и сохраняется в файле montage.jpg. Аргумент -label %f присваивает каждой картинке текстовую метку, генерирующуюся из имени файла. Аргумент -border 1 указывает на то, что каждая картинка должна иметь тонкую рамку.
Получение информации о графическом файле
Для получения базовой информации о графическом файле достаточно ввести следующую простую команду:
1$ identify flower.jpg
В результате исполнения этой команды на экране появится следующая информация:
1flower.jpg JPEG 1024×859 1024×859+0+0 DirectClass 8-bit 347.061kb
Чтобы получить более подробную информацию, включая данные EXIF24, дайте следующую команду:
1$ identify -verbose flower.jpg
Вы можете даже избирательно извлекать из файла только интересующую вас информацию, например:
1$ identify -format «%f %wx%hn» *.jpg
Данная команда отобразит только ту информацию, которая была запрошена (%f — имя файла, %w — ширина, %h — высота). В результате работы этой команды на экран будет выведен список всех файлов с расширением .jpg, хранящихся в данном каталоге, плюс запрошенная информация о каждом из них. Вывод этой команды показан в листинге.
12345678910// Избирательный вывод информации о файлах с помощью//команды identifyflower.jpg 1024x859flower270r.jpg 859x1024flower30r.jpg 1316x1255flower50.jpg 512x430flower5050.jpg 50x42flower90r.jpg 859x1024flowerNifty.jpg 512x430montage.jpg 520×288
Пакетные операции над графическими файлами
Во многих случаях использования символов шаблона (например, *.jpg) уже достаточно для одновременного выполнения заданной операции над множеством графических файлов, например:
1$ mogrify -resize 200×200 *.jpg
Эта команда перемасштабирует каждый файл формата JPEG, найденный в каталоге, до размера 200×200 с сохранением их имен. Команда mogrify аналогична команде convert, с тем лишь отличием, что она перезаписывает исходный файл, а не создает новый. Поэтому при работе с ней будьте внимательны. Если вы хотите сохранить оригинал, следует пользоваться командой convert. Однако, чтобы применить эту команду к большому количеству файлов, вам потребуется написать несложный скрипт (о написании скриптов говорилось в рецепте 32). Пример такого скрипта показан в листинге.
// Применение команды convert к большому количеству файлов
for image in *.jpg
do
convert $image -resize 200×200 size200-$image
doneСкрипт, приведенный в листинге, обрабатывает каждый файл формата JPEG, найденный в текущем каталоге. Он открывает файл, перемасштабирует его до размера 200×200 и сохраняет результат в файле с другим именем.
Имя результирующего файла формируется из имени исходного с добавлением префикса size200-. Отредактируйте этот скрипт и поэкспериментируйте с ним над теми файлами, которые не представляют для вас большой ценности. Эта возможность просто неоценима при обработке большого количества файлов — например, когда вам требуется создать большое количество миниатюр для Web-сайта или получить файлы меньшего размера для пересылки по электронной почте.
Если вы хорошо владеете языками командных сценариев, вы очень быстро догадаетесь о том, как удобно использовать ImageMagick в качестве части другого, более масштабного проекта, или при написании скриптов для автоматизации однообразной работы.