function drawText(\Imagick $imagick, $shadow = false) { $draw = new \ImagickDraw(); if ($shadow == true) { $draw->setStrokeColor('black'); $draw->setStrokeWidth(8); $draw->setFillColor('black'); } else { $draw->setStrokeColor('none'); $draw->setStrokeWidth(1); $draw->setFillColor('lightblue'); } $draw->setFontSize(96); $text = "Imagick\nExample"; $draw->setFont("../fonts/CANDY.TTF"); $draw->setGravity(\Imagick::GRAVITY_SOUTHWEST); $imagick->annotateimage($draw, 40, 40, 0, $text); if ($shadow == true) { $imagick->blurImage(10, 5); } return $imagick; } function getSilhouette(\Imagick $imagick) { $character = new \Imagick(); $character->newPseudoImage( $imagick->getImageWidth(), $imagick->getImageHeight(), "canvas:white" ); $canvas = new \Imagick(); $canvas->newPseudoImage( $imagick->getImageWidth(), $imagick->getImageHeight(), "canvas:black" ); $character->compositeimage( $imagick, \Imagick::COMPOSITE_COPYOPACITY, 0, 0 ); $canvas->compositeimage( $character, \Imagick::COMPOSITE_ATOP, 0, 0 ); $canvas->setFormat('png'); return $canvas; } function renderFontEffect() { $canvas = new \Imagick(); $canvas->newPseudoImage( 500, 300, "canvas:none" ); $canvas->setImageFormat('png'); $shadow = clone $canvas; $text = clone $canvas; drawText($text); drawText($shadow, true); $edge = getSilhouette($text); $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "2"); $edge->morphology(\Imagick::MORPHOLOGY_EDGE_IN, 1, $kernel); $edge->compositeImage( $text, \Imagick::COMPOSITE_ATOP, 0, 0 ); $canvas->compositeImage( $shadow, \Imagick::COMPOSITE_COPY, 0, 0 ); $canvas->compositeImage( $text, \Imagick::COMPOSITE_ATOP, 0, 0 ); header("Content-Type: image/png"); echo $canvas->getImageBlob(); }