Image::Magick или фотошоп для perl.Image::Magick или фотошоп для perl.Если вы занимались когда-либо обработкой изображений с помощью perl. То Вы наверное знаете, что то средство, которое нам предлагается повсюду не всегда хорошо подходит для наших нужд. Я конечно имею ввиду модуль GD. Почему он нам не подходит? Начну по-порядку. Во-первых, при resize изображения:
Мы получаем очень, не качественно уменьшенную (или увеличенную) картинку, да и еще не качественно закомпрессированную. Например, в моем случае GD из jpeg изображения 640х480 (25 kb) при уменьшении в 200х150 создавала не качественное изображение весом всего на 20% меньше (~20kb). Хотя при уменьшеении ACDSee 5 (ACD FotoCanvas Lite 2.0) картинка занимала всего ~5 kb и при этом была отличного качества. Вы подумаете, мол сохраняй её по-человеческий, задай уровень сжатия jpeg - 80 и всё будет путем. Ан нет.
Результат еще хуже. Размер больше изначального. Во-вторых, не внушает список функция GD. Нет, он внушает, но предназначен не много не для наших целей. С помощью GD удобно сделать надпись на точном изображении. В особенности .PNG. А например обрезать изображение, вытянуть, поменять цвета и вставить в него другое изображение с помощью GD уже не удобно. В-третьих, у нас нет возможности делать GIF изображения. В том числе анимационные .gif файлы. Что тоже хочется. Итак. Image::Magick со всем справляется великолепно. Покажу для начала пример, изменения картинки jpg. Есть photo.jpg. Размер 640х272. Замечу что фото изначально не очень качественное. 12621 bytes. ![]() Задача сделать чтобы она была размером 200х150.
Результат. Картинка 200х150 великолепного качества. 4206 bytes. ![]() Как видите всё проще пареной репы. :) Таким образом мы можем получить, например, из 300х180. Изображение 200х150. Что очень удобно, для сайтов с ограниченным дизайном. К примеру, если это иллюстрация к статьям, и Вы хотите чтобы картинки были одинакового размера. Есть в этом примере и один недостаток. Это - если ширина меньше 200, что изображение будет уже неодинакового размера. То есть при высоте 150 ширина будет меньше 200. Изменить этот недостаток очень легко. Нужно всего лишь проверить что больше ширина/200 или высота/150 и если больше высота/150, то изменять размер не ширины, а высоты и резать не ширину, а высоту. Следующий пример. Выравнивает контрастность и нормализирует цвета.
Получаем. 4647 bytes. ![]() Сделаем изображение черно-белым.
Получаем. 4159 bytes. ![]() Очень часто нам нужно конвертировать изображения из одного формата в другой. Сделать это также легко. Рассмотрим, как это сделать.
В результат изображение в формате png. ![]() Так мы сможем открыть gif изображение. В данном случае первый фрейм.
Полный набор возможностей и инструментов Вы найдете в документации модуля здесь. Возможности на самом деле сопоставимы с возможностями фотошопа. Но всё же, Image::Magick хорош именно для редактирования изображений. Для точных изображений, рекомендую всё же использовать GD. Комментарии пишите в форум //forum.768.ru/page_general_1036869716.html или лично на leonidp@yandex.ru Перепечатка приветствуется при сохранении гиперссылок. Леонид Палагин (//forum.768.ru/page_general_1036869716.html) 9 ноября 2002 г. |