array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'imagick.distortimage.php', 1 => 'Imagick::distortImage', ), 'up' => array ( 0 => 'class.imagick.php', 1 => 'Imagick', ), 'prev' => array ( 0 => 'imagick.displayimages.php', 1 => 'Imagick::displayImages', ), 'next' => array ( 0 => 'imagick.drawimage.php', 1 => 'Imagick::drawImage', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/imagick/imagick/distortimage.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PECL imagick 2 >= 2.0.1, PECL imagick 3)
Imagick::distortImage — Искажает изображение, используя различные методы искажения
Искажает изображение, используя различные методы искажения, сопоставляя поисковые запросы цвета исходного изображения
с новым целевым изображением, обычно того же размера, что и исходное изображение,
если для параметра "bestfit" установлено значение true
.
Если параметр "bestfit" включён и это позволяет искажение, целевое изображение настраивается таким образом, чтобы исходное изображение полностью соответствовало конечному целевому изображению, которое будет иметь соответствующий размер и смещение. Также во многих случаях при сопоставлении будет учитываться виртуальное смещение исходного изображения.
Этот метод доступен, если Imagick был скомпилирован с версией ImageMagick 6.3.6 или старше.
method
Метод искажения изображения. Смотрите константы искажения.
arguments
Аргументы для выбранного метода искажения.
bestfit
Попытка изменить размер места назначения, чтобы он соответствовал искажённому источнику.
В случае успешной работы возвращает true
.
Вызывает ImagickException, если возникла ошибка.
Пример #1 Пример использования Imagick::distortImage():
Искажение изображения и отображение в браузере.
<?php
/* Создание нового объекта */
$im = new Imagick();
/* Создание нового узора в виде шахматной доски */
$im->newPseudoImage(100, 100, "pattern:checkerboard");
/* Установка формата изображения на png */
$im->setImageFormat('png');
/* Заполнение новых видимых областей прозрачным цветом */
$im->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
/* Активация матовости */
$im->setImageMatte(true);
/* Контрольные точки для искажения */
$controlPoints = array( 10, 10,
10, 5,
10, $im->getImageHeight() - 20,
10, $im->getImageHeight() - 5,
$im->getImageWidth() - 10, 10,
$im->getImageWidth() - 10, 20,
$im->getImageWidth() - 10, $im->getImageHeight() - 10,
$im->getImageWidth() - 10, $im->getImageHeight() - 30);
/* Выполнение искажения */
$im->distortImage(Imagick::DISTORTION_PERSPECTIVE, $controlPoints, true);
/* Вывод изображения */
header("Content-Type: image/png");
echo $im;
?>
Вывод приведённого примера будет похож на: