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

apelsyn 1 июня 2008 в 02:30 1,8k
Уменьшаем изображение разными библиотеками и сравниваем результат

Для многих задач автоматической обработки фотографий не подходит качество и функционал библиотеки 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% сохранением качества.

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

Проголосовать:
+62
Сохранить: