Создание эффекта перспективы в Imagick

Продолжаем свое движение в постижении работы с «консольным фотошопом» на php. На этот раз посмотрим как с помощью Imagick создать эффект перспективы изображения.

Не буду много писать, сразу к делу:

  1. <?php
  2. /* Создаем новый объект Imagick */
  3. $im = new Imagick();
  4.  
  5. /* Создаем новый паттерн в виде шахматной доски */
  6. $im->newPseudoImage(100, 100, "pattern:checkerboard");
  7.  
  8. /* Тип изображения - png */
  9. $im->setImageFormat('png');
  10.  
  11. /* Делаем фон прозрачным */
  12. $im->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
  13.  
  14. /* Активизируем маску */
  15. $im->setImageMatte(true);
  16.  
  17. /* Расставляем точки для деформации */
  18. $controlPoints = array( 10, 10, 
  19.                         10, 5,
  20.  
  21.                         10, $im->getImageHeight() - 20,
  22.                         10, $im->getImageHeight() - 5,
  23.  
  24.                         $im->getImageWidth() - 10, 10,
  25.                         $im->getImageWidth() - 10, 20,
  26.  
  27.                         $im->getImageWidth() - 10, $im->getImageHeight() - 10,
  28.                         $im->getImageWidth() - 10, $im->getImageHeight() - 30); 
  29.  
  30. /* Деформируем изображение */  
  31. $im->distortImage(Imagick::DISTORTION_PERSPECTIVE, $controlPoints, true);
  32.  
  33. /* И наслаждаемся им в браузере */   
  34. header("Content-Type: image/png");
  35. echo $im;

Вот что должно получиться в итоге:

Шахматная доска в перспективе с помощью Imagick

Шахматная доска в перспективе с помощью Imagick


Где использовать эффект создания перспективы, думаю, придумаете сами :)
Оригинал

Запись опубликована в рубрике PHP & MySQL с метками , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">