Для многих задач автоматической обработки фотографий не подходит качество и функционал библиотеки GD. Поскольку возможности обратиться к Photoshop из PHP или Perl пока не существует, решаем проблему с помощью ImageMagick.
Речь пойдет о PHP инрефейсе к ImageMagick MagickWand, который в репозитарии Fedora называется php-magickwand. Хочу обратить Ваше внимание, что MagickWand API отличается от классического ImageMagick тем что позволяет работать как с элементами растровой графики, так и с элементами векторной графики.
Для php есть еще одна реализация интерфейса к ImageMagick, которая называется IMagick, но функционал этой библиотеки, на мой взгляд, уступет MagickWand.
В первой статье рассмотрим на примерах несколько типичных задач по обработке изображений и сравним результаты с php-gd.
Уменьшаем изображение вот таким простым кодом
'x100' означает по вертикали 100, по горизонтали сколько получиться,
второй параметр отвечает за функции обрезки изображения мы их в нашем примере не используем. MagickStripImage убирает комментарии, иногда заметно уменьшает размер маленьких изображений.
Опытный web-дизайнер знает, что при сильном уменьшении изображения для Web,
чтоб картинка выглядела более презентабельно, ей немного добавляют резкости. Параметры наведение резкости зависит от размера картинки, ну и собственно от художественного вкуса дизайнера. Наводим резкость средствами MagickWand:
Теперь сравним результаты, проделаем операцию уменьшения с помощью GD, в режиме по умолчанию и с 100% сохранением качества.
Речь пойдет о PHP инрефейсе к ImageMagick MagickWand, который в репозитарии Fedora называется php-magickwand. Хочу обратить Ваше внимание, что MagickWand API отличается от классического ImageMagick тем что позволяет работать как с элементами растровой графики, так и с элементами векторной графики.
Для php есть еще одна реализация интерфейса к ImageMagick, которая называется IMagick, но функционал этой библиотеки, на мой взгляд, уступет MagickWand.
В первой статье рассмотрим на примерах несколько типичных задач по обработке изображений и сравним результаты с php-gd.
Уменьшаем картинку
Уменьшаем изображение вот таким простым кодом
$magick_wand=NewMagickWand();
MagickReadImage($magick_wand,'linux_users.jpg');
$mgck_local=MagickTransformImage($magick_wand, NULL,'x100');
MagickStripImage($mgck_local);
MagickEchoImageBlob($mgck_local);
'x100' означает по вертикали 100, по горизонтали сколько получиться,
второй параметр отвечает за функции обрезки изображения мы их в нашем примере не используем. MagickStripImage убирает комментарии, иногда заметно уменьшает размер маленьких изображений.
Опытный web-дизайнер знает, что при сильном уменьшении изображения для Web,
чтоб картинка выглядела более презентабельно, ей немного добавляют резкости. Параметры наведение резкости зависит от размера картинки, ну и собственно от художественного вкуса дизайнера. Наводим резкость средствами MagickWand:
$magick_wand=NewMagickWand();
MagickReadImage($magick_wand,'linux_users.jpg');
$mgck_local=MagickTransformImage($magick_wand, NULL,'x100');
MagickSharpenImage($mgck_local,1,4);
MagickStripImage($mgck_local);
MagickEchoImageBlob($mgck_local);
Теперь сравним результаты, проделаем операцию уменьшения с помощью GD, в режиме по умолчанию и с 100% сохранением качества.
Режим обработки | Изображение |
---|---|
GD режим «по умолчанию» (2 351 b) Очень маленький размер но потеря качества уже заметна |
|
GD 100% качество (7 847 b) Качество хорошее, GD все делает отлично! |
|
MagickWand «по умолчанию» (9 695 b) Качество хорошее, но размер немного больше! |
|
MagickWand + наведение резкости (14 508 b) Здесь картинка без сомнения выглядит лучше предложенных вариантов! |