&reftitle.examples;
Uso básico Imagick hace que la manipulación de imágenes en PHP sea extremadamente sencilla a través de una interfaz OO. Aquí está un ejemplo breve de cómo hacer una miniatura: Crear una miniatura con Imagick thumbnailImage(100, 0); echo $imagen; ?> ]]> Al usar SPL y otras características OO soportadas en Imagick, puede ser sencillo redimensionar todos los archivos de un directorio (útil para la redimensión por lotes de muchas imágenes de cámara digital para que sean visibles desde una web). Aquí usamos redimensión, ya que queremos mantener cierta meta-información: Hacer una miniatura de todos los archivos JPG de un directorio thumbnailImage(1024,0); } $imágenes->writeImages(); ?> ]]> Este es un ejemplo de crear un reflejo de una imagen. El reflejo se crea volteando la imagen y poniendo una capa de gradiente sobre ella. Ambas, la imagen original y el reflejo, están sobrepuestas en un lienzo. Crear un reflejo de una imagen thumbnailImage(200, null); /* Crear un borde para la imagen */ $im->borderImage(new ImagickPixel("white"), 5, 5); /* Clonar la imagen y voltearla */ $reflejo = $im->clone(); $reflejo->flipImage(); /* Crear un gradiente. Será sobrepuesto en el reflejo */ $gradiente = new Imagick(); /* El gradiente necesita ser más grande que la imagen y los bordes */ $gradiente->newPseudoImage($reflejo->getImageWidth() + 10, $reflejo->getImageHeight() + 10, "gradient:transparent-black"); /* Componer el gradiente con el reflejo */ $reflejo->compositeImage($gradiente, imagick::COMPOSITE_OVER, 0, 0); /* Añadir algo de opacidad. Requiere ImageMagick 6.2.9 o superior */ $reflejo->setImageOpacity( 0.3 ); /* Crear un lienzo vacío */ $lienzo = new Imagick(); /* El lienzo necesita ser más grande para mantener ambas imágenes */ $ancho = $im->getImageWidth() + 40; $alto = ($im->getImageHeight() * 2) + 30; $lienzo->newImage($ancho, $alto, new ImagickPixel("black")); $lienzo->setImageFormat("png"); /* Componer la imagen original y el reflejo sobre el lienzo */ $lienzo->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10); $lienzo->compositeImage($reflejo, imagick::COMPOSITE_OVER, 20, $im->getImageHeight() + 10); /* Imprimir la imagen */ header("Content-Type: image/png"); echo $lienzo; ?> ]]> &example.outputs.similar; Salida del ejemplo : Crear un reflejo de una imagen Este ejemplo ilustra cómo usar patrones de relleno durante el dibujo. Rellenar un texto con un gradiente newPseudoImage(50, 50, "gradient:red-black"); /* Crear un objeto imagickdraw */ $dibujo = new ImagickDraw(); /* Iniciar un nuevo patrón llamado "gradient" */ $dibujo->pushPattern('gradient', 0, 0, 50, 50); /* Componer el gradiente con el patrón */ $dibujo->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im); /* Cerrar el patrón */ $dibujo->popPattern(); /* Usar el patrón llamado "gradient" como el relleno */ $dibujo->setFillPatternURL('#gradient'); /* Establecer el tamaño de fuente a 52 */ $dibujo->setFontSize(52); /* Anotar algo de texto */ $dibujo->annotation(20, 50, "Hello World!"); /* Crear un nuevo lienzo y una imagen blanca */ $lienzo = new Imagick(); $lienzo->newImage(350, 70, "white"); /* Dibujar el objeto ImagickDraw sobre el lienzo */ $lienzo->drawImage($dibujo); /* Borde negro de 1px alrededor de la imagen */ $lienzo->borderImage('black', 1, 1); /* Establecer el formato a PNG */ $lienzo->setImageFormat('png'); /* Imprimir la imagen */ header("Content-Type: image/png"); echo $lienzo; ?> ]]> &example.outputs.similar; Salida del ejemplo : Rellenar texto con gradiente Trabajar con imágenes GIF animadas Leer una imágen GIF y redimensionar todos los fotogramas thumbnailImage(50, 50); /* Establecer el lienzo virtual para corregir el tamaño */ $fotograma->setImagePage(50, 50, 0, 0); } /* Observe: writeImages en vez de writeImage */ $im->writeImages("example_small.gif", true); ?> ]]> Trabajar con primitivas de elipse y tipos de letra personalizados Crear un logo de PHP newImage($ancho, $alto, new ImagickPixel('transparent')); /* Nueva instancia de ImagickDraw para dibujar la elipse */ $dibujo = new ImagickDraw(); /* Establecer el color de relleno púrpura para la elipse */ $dibujo->setFillColor('#777bb4'); /* Establecer las dimensiones de la elipse */ $dibujo->ellipse($ancho / 2, $alto / 2, $ancho / 2, $alto / 2, 0, 360); /* Dibujar la elipse en el lienzo */ $img->drawImage($dibujo); /* Restablecer el color de relleno de púrpura a negro para el texto (nota: estamos reutilizando el objeto ImagickDraw) */ $dibujo->setFillColor('black'); /* Establecer el borde del contorno al color blanco */ $dibujo->setStrokeColor('white'); /* Establecer el grosor del borde del contorno */ $dibujo->setStrokeWidth(2); /* Establecer el interletraje («kerning») del tipo de letra (un valor negativo significa que las letras están más juntas entre ellas) */ $dibujo->setTextKerning(-8); /* Establecer el tamaño del tipo de letra usado para el logo de PHP */ $dibujo->setFont('Handel Gothic.ttf'); $dibujo->setFontSize(150); /* Centrar el texto horizontal y verticalmente */ $dibujo->setGravity(Imagick::GRAVITY_CENTER); /* Añadir en el centro "php" con el índice Y de -10 al lienzo (dentro de la elipse) */ $img->annotateImage($dibujo, 0, -10, 0, 'php'); $img->setImageFormat('png'); /* Establecer la cabecera apropiada para PNG y generar la imagen */ header('Content-Type: image/png'); echo $img; ?> ]]> &example.outputs.similar; Salida del ejemplo: Crear el logo de PHP con Imagick