Beispiel #1
0
function blackBox(&$canvas, $o) {

	$rectangle = new Imagick();
	$rectangle->newPseudoImage($o['w'], $o['h'], "xc:none");
	$draw1 = new ImagickDraw();
	$draw1->pushPattern('gradient', 0, 0, 5, 5);
	$tile = new Imagick();
	$tile->readImage(realpath("assets/diag_tile.png"));
	$draw1->composite(Imagick::COMPOSITE_OVER, 0, 0, 5, 5, $tile);
	$draw1->popPattern();
	$draw1->setFillPatternURL('#gradient');
	$draw1->rectangle(0, 0, $o['w'], $o['h']);
	$rectangle->drawImage($draw1);

	$gradient = new Imagick();
	$gradient->newPseudoImage($o['w'], $o['h'], "gradient:#DDD-#666");

	$rectangle->compositeImage($gradient, Imagick::COMPOSITE_COPYOPACITY, 0, 0);

	$black = new Imagick();
	$black->newPseudoImage($o['w'], $o['h'], "xc:black");

	$layered = new Imagick();
	$layered->newPseudoImage($o['w'] + 20, $o['h'] + 20, "xc:none");
	$layered->compositeImage($black, Imagick::COMPOSITE_OVER, 5, 0);
	$layered->compositeImage($black, Imagick::COMPOSITE_OVER, 5, 5);
	$layered->compositeImage($gradient, Imagick::COMPOSITE_COPYOPACITY, 5, 5);
	$layered->blurImage(4, 5, imagick::CHANNEL_ALPHA);
	$layered->compositeImage($black, Imagick::COMPOSITE_DSTOUT, 0, 0);

	$canvas->compositeImage($layered, Imagick::COMPOSITE_OVER, $o['x'], $o['y']);
	$canvas->compositeImage($rectangle, Imagick::COMPOSITE_OVER, $o['x'], $o['y']);
}
Beispiel #2
0
 function __construct($chemin)
 {
     if (filter_var($chemin, FILTER_VALIDATE_URL)) {
         //URL
         $headers = @get_headers($chemin);
         if (strpos($headers[0], '404') != false) {
             //NOT FOUND
             //throw new \Exception("Not Found Image");
             $this->image = new \Imagick();
             $this->image->newImage(600, 600, new \ImagickPixel('white'));
             /* Création d'un nouvel objet imagick */
             $im = new \Imagick();
             /* Création d'une nouvelle image. Elle sera utilisée comme masque de remplissage */
             $im->newPseudoImage(50, 100, "gradient:gray-black");
             /* Création d'un nouvel objet imagickdraw */
             $draw = new \ImagickDraw();
             /* On commence un nouveau masque nommé "gradient" */
             $draw->pushPattern('gradient', 0, 0, 50, 110);
             /* Ajout du dégradé sur le masque */
             $draw->composite(\Imagick::COMPOSITE_OVER, 0, 0, 50, 110, $im);
             /* Fermeture du masque */
             $draw->popPattern();
             /* Utilisation du masque nommé "gradient" comme remplissage */
             $draw->setFillPatternURL('#gradient');
             /* Définition de la taille du texte à 52 */
             $draw->setFontSize(92);
             $draw->setFont(ROOT . DS . 'font/comic.ttf');
             /* Ajout d'un texte */
             $draw->annotation(20, 100, "Not Found !");
             $this->image->drawImage($draw);
         }
     } else {
         if (!file_exists($chemin)) {
             //throw new \Exception("Not Found Image");
             $this->image = new \Imagick();
             $this->image->newImage(600, 600, new \ImagickPixel('white'));
             /* Création d'un nouvel objet imagick */
             $im = new \Imagick();
             /* Création d'une nouvelle image. Elle sera utilisée comme masque de remplissage */
             $im->newPseudoImage(50, 100, "gradient:gray-black");
             /* Création d'un nouvel objet imagickdraw */
             $draw = new \ImagickDraw();
             /* On commence un nouveau masque nommé "gradient" */
             $draw->pushPattern('gradient', 0, 0, 50, 110);
             /* Ajout du dégradé sur le masque */
             $draw->composite(\Imagick::COMPOSITE_OVER, 0, 0, 50, 110, $im);
             /* Fermeture du masque */
             $draw->popPattern();
             /* Utilisation du masque nommé "gradient" comme remplissage */
             $draw->setFillPatternURL('#gradient');
             /* Définition de la taille du texte à 52 */
             $draw->setFontSize(92);
             $draw->setFont(ROOT . DS . 'font/comic.ttf');
             /* Ajout d'un texte */
             $draw->annotation(20, 100, "Not Found !");
             $this->image->drawImage($draw);
         }
     }
     $this->image = new \Imagick($chemin);
     $imageprops = $this->image->getImageGeometry();
     $this->width = $imageprops['width'];
     $this->height = $imageprops['height'];
     $this->image->setImageFormat("jpeg");
 }
Beispiel #3
0
function pushPattern($strokeColor, $fillColor, $backgroundColor)
{
    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->pushPattern("MyFirstPattern", 0, 0, 50, 50);
    for ($x = 0; $x < 50; $x += 10) {
        for ($y = 0; $y < 50; $y += 5) {
            $positionX = $x + $y / 5 % 5;
            $draw->rectangle($positionX, $y, $positionX + 5, $y + 5);
        }
    }
    $draw->popPattern();
    $draw->setFillOpacity(0);
    $draw->rectangle(100, 100, 400, 400);
    $draw->setFillOpacity(1);
    $draw->setFillOpacity(1);
    $draw->push();
    $draw->setFillPatternURL('#MyFirstPattern');
    $draw->setFillColor('yellow');
    $draw->rectangle(100, 100, 400, 400);
    $draw->pop();
    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);
    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}