Фотошопим на 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
Сохранить:
Лучшее на Habrahabr

Часть 2. Сначала они воруют, а когда ты побеждаешь, то тебя убивают

InkOutсегодня в 12:50
98

Исследование безопасности транспортной системы Тбилиси — или как кататься на транспорте и зарабатывать

из песочницы
Xadokвчера в 17:28
12

Что нового в PHP 7.2?

Cubistсегодня в 11:39
25

Битовый способ отображения тайловых карт

перевод
PatientZeroсегодня в 12:31
5

Снижаем цены на локальные SSD-накопители в «вытесняемых» инстансах и инстансах по требованию

zviadвчера в 17:47
14

Как легально «вскрыть» QIWI Кошелек и прокачать его по полной программе

d_garmashevсегодня в 11:26
20

CRM-система: полный алгоритм внедрения

Axelusсегодня в 13:23
5

Перехватываем запуск любого приложения в Windows и пытаемся ничего не сломать

из песочницы
diversenokсегодня в 11:07
5

Oh, My Code — новая передача про управление в IT на канале Технострим

Olga_olвчера в 20:00
12

Sosnovkino — первый отечественный скам? Или соберём денег побыстрее и побольше

Menaskopсегодня в 02:04
22