Как стать автором
Обновить

Фотошопим на PHP

Время на прочтение 2 мин
Количество просмотров 4K
Уменьшаем изображение разными библиотеками и сравниваем результат Для многих задач автоматической обработки фотографий не подходит качество и функционал библиотеки GD. Поскольку возможности обратиться к Photoshop из PHP или Perl пока не существует, решаем проблему с помощью ImageMagick.

Речь пойдет о 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% сохранением качества.

Есть еще материал по водным знакам и по эфектам PhotoShop на MagickWand, это припасу для следующей статьи, если конечно эта информация была для Вас интересна.
Режим обработки Изображение
GD режим «по умолчанию» (2 351 b)
Очень маленький размер но потеря качества уже заметна
GD 100% качество (7 847 b)
Качество хорошее, GD все делает отлично!
MagickWand «по умолчанию» (9 695 b)
Качество хорошее, но размер немного больше!
MagickWand + наведение резкости (14 508 b)
Здесь картинка без сомнения выглядит лучше предложенных вариантов!

Теги:
Хабы:
+62
Комментарии 31
Комментарии Комментарии 31

Публикации

Истории

Работа

PHP программист
171 вакансия

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн