html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Бенчмарк графических библиотек для PHP

image
В проекте который мы сейчас разрабатываем много работы с фотографиями, в результате чего скорость графической библиотеки является фактически главным фактором при оптимизации сайта. Не секрет что ImageMagick давно стал стандартом разработки на PHP, хотя уже некоторое время его оттуда сталкивает форк под названием GraphicsMagick. Мне стало интересно насколько сильно они отличаются и сколько форы могут дать старому доброму GD. К счастью как раз недавно вышел графический модуль для PHPixie который поддерживает все три библиотеки, что и позволило мне провести достаточно интересные тесты.


В духе самого фреймворка экспериментировать будем на фее которая справа ( взята с девиантарта http://j-scott-campbell.deviantart.com/ ). Если кому-то покажется что в ней слишком много иннуендо, то посмею напомнить что уже больше 20 лет стандартным рисунком тестирования графических алгоритмов является Lenna из плейбоя.

Сейчас следует короткое описание тестов и выходные рисунки. В конце статьи будет сам бенчмарк скорости работы одной таблицей.

Простое масштабирование

Итак сначала попробуем уменьшить ее до 100 пикселей по ширине.
$pixie->image->read($dir.'fairy.jpg')
			->resize(200)
			->save($dir.'resize.jpg');



image


Разницы особой на первый взгляд незаметно, но например ее глаз на GD версии не имеет того ярко выраженного зеленого цвета как у Imagick и Gmagick.

Создание квадратной аватарки

Чтобы сделать автарку квадратной ее нужно сначала масштабировать по меньшей стороне а затем обрезать по большей. На PHPixie это делается довольно просто:

$pixie->image->read($dir.'fairy.jpg')
			->resize(200, 200, false)
			->crop(200, 200)
			->save($dir.'crop.jpg');


image

Очевидно что выглядеть они будут идентически предидущим.

Написание текста и создание пустого изображения

Теперь попробуем создать белый рисунок и написать текст фиолетовым цветом используя TTF шрифт.

$pixie->image->create(300, 70, 0xffffff, 1)
			->text("Hello World", 50, $dir.'/Sofia-Regular.ttf', 10, 50, 0x5B43AA)
			->save($dir.'text.jpg');


image

Тут результаты немного подраматичней. GD почему-то сделала цвет текста темней и гораздо хуже сработал антиалиасинг, в результате чего края текста немного размыты. У обеих Magick-ов текст получился гораздо лучше.

Разбиение текста на строки

Текст на строки разбивает сама PHPixie, но для этого она использует информацию о метрике текста от графической библиотеки. Так как приходится считать размер каждого слова это может быть довольно дорогим процессом. Итак попробуем поместить на пустую страницу кусочек песенки.

$text = "When I closed my eyes to the shimmering light ".
           "all memory faded and I could see ".
           "that a mushroom circle of red and white ".
           "and myriad fairies surrounded me. ";

$pixie->image->create(300, 180, 0xffffff, 1)
			->text($text, 20, $dir.'/Sofia-Regular.ttf', 10, 50, 0x5B43AA, 1, 300)
			->save($dir.'wrap.jpg');



image


На меньшем шрифте недостатки не так заметны но если присмотреться к изгибам то довольно легко можно отличить. Но надо заметить что Imagick потратил намного больше времени, прежде всего из за пересчитывания метрики шрифта на каждом слове (ведь приходится наново считывать шрифт с диска каждый раз) в то время как GD и Gmagick были намного быстрее.

Наложение и оборачивание рисунков

Этот тест наиболее оторван от реальности, но хотелось побенчить скорость наложения рисунков и вообще операции посложнее. Итак мы создаем пустой рисунок, с одной стороны ставим автарку феи а с другой ту же аватарку только обернутую по горизонтали и вертикали да еще и развернутую боком.


$canvas = $pixie->image->create(400, 200);
	$fairy = $pixie->image->read($dir.'fairy.jpg')
				->resize(200, 200, false)
				->crop(200, 200);
	$canvas	->overlay($fairy, 0, 0)
			->overlay($fairy->flip(true, true)->rotate(90), 200, 0)
			->save($dir.'overlay.jpg');


image

Скорость работы


А вот и сам бенчмарк. По горизонтали слева-направо проведенные тесты, по вертикали среднее время исполнения ( каждый тест прогонялся 100 раз).


image


Вывод, лучше всего таки использовать Gmagick, если его нет то Imagick. Над GD можно задуматься только в случае если надо будет писать много текста и то не очень замысловатым шрифтом.

Кстати отдельно замечу насколько сильно мне понравился интерфейс самой PHPixie в этом плане, в особенности наличие функций для множества стандартных действий (тот же самый враппинг текста) для которых раньше приходилось качать отдельные классы.
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

2

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • habrahabr.ru
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции