(PECL imagick 2.0.1)
Imagick::distortImage — Deforma una imagen utilizando varios métodos de distorsión
$method
, array $arguments
, bool $bestfit
) : bool
Deforma una imagen utilizando varios métodos de distorsión, mapeando la paleta
de colores de la imagen de origen a una nueva imagen destino normalmente del mismo
tamaño que la imagen de origen, a menos que 'bestfit' esté establecido a TRUE
.
Si 'bestfit' está habilitado, y la distorsión lo permite, la imagen destino se ajusta para asegurarse de que la 'imagen' de origen entera se ajustará dentro de la imagen destino final, la cuál será redimensionada e compensada acordemente. También, en la mayoría de los casos el índice virtual de la imagen de origen será tomado en cuenta en el mapeado.
Este método está disponible si Imagick ha sido compilado con la versión 6.3.6 o superior de ImageMagick.
method
El método de distorsión de la imagen. Véase constantes de distorsión
arguments
Los argumentos para este método de distorsión
bestfit
Intenta redimensionar la imagen destino para ajustarse a la imagen de origen deformada
Devuelve TRUE
en caso de éxito.
Lanza ImagickException en caso de error.
Ejemplo #1 Usar Imagick::distortImage():
Deformar una imagen y mostrarla en el navegador.
<?php
/* Crear un nuevo objeto */
$im = new Imagick();
/* Crear un nuevo patrón de tablero de ajedrez */
$im->newPseudoImage(100, 100, "pattern:checkerboard");
/* Esteblecer el formato de la imagen a png */
$im->setImageFormat('png');
/* Rellenar las nuevas áreas visibles con transparente */
$im->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
/* Activar el mate */
$im->setImageMatte(true);
/* Puntos de control para la distorsión */
$puntosControl = 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);
/* Realizar la distorsión */
$im->distortImage(Imagick::DISTORTION_PERSPECTIVE, $puntosControl, true);
/* Imprimir la imagen */
header("Content-Type: image/png");
echo $im;
?>
El resultado del ejemplo sería algo similar a: