note 103357 modified in function.imagickdraw-pushclippath by danbrown

From: Date: Sat, 09 Apr 2011 14:20:23 +0000
Subject: note 103357 modified in function.imagickdraw-pushclippath by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-178661@lists.php.net to get a copy of this message
Here's an interactive example for your enjoyment, featuring two intersecting discs. My version doesn't antialias the clipping path; I suppose YMMV. <?php // Simple clip path example // Bogdan Stancescu $showClipping=1; // Try setting this to 0! $showDrawing=1; // Try setting this to 0! // Don't edit below this line (at least until you understand the example) $showBoth=$showClipping && $showDrawing; $showAny=$showClipping || $showDrawing; $image=new Imagick(); // Create image // Image size $width=151; $height=101; $image->newImage($width, $height, new ImagickPixel('lightgray')); // some visible background $draw=new ImagickDraw(); // Create draw object if ($showBoth) $draw->pushClipPath('circle_left'); // Start clipping path if ($showClipping) { $draw->setFillColor('red'); // The color doesn't matter if we clip $draw->circle(50,50,50,0); // A circle that occupies 100x100px on the left } if ($showBoth) { $draw->popClipPath(); // Finish clipping path $draw->setClipPath('circle_left'); // Use the clipping path above } if ($showDrawing) { $draw->setFillColor('navy'); // This is the actual drawing color $draw->circle(100,50,100,0); // A circle that occupies 100x100px on the right } if ($showAny) $image->drawImage($draw); // Render $draw unto $image $image->setImageFormat('png'); // Tell ImageMagick how to render this header("Content-Type: image/png"); // Tell the browser how to render this echo $image; // Render the image into the browser ?> --was-- Here's an interactive example for your enjoyment, featuring two intersecting discs. My version doesn't antialias the clipping path; I suppose YMMV. <?php // Simple clip path example // Bogdan Stancescu, http://www.moongate.eu/ $showClipping=1; // Try setting this to 0! $showDrawing=1; // Try setting this to 0! // Don't edit below this line (at least until you understand the example) $showBoth=$showClipping && $showDrawing; $showAny=$showClipping || $showDrawing; $image=new Imagick(); // Create image // Image size $width=151; $height=101; $image->newImage($width, $height, new ImagickPixel('lightgray')); // some visible background $draw=new ImagickDraw(); // Create draw object if ($showBoth) $draw->pushClipPath('circle_left'); // Start clipping path if ($showClipping) { $draw->setFillColor('red'); // The color doesn't matter if we clip $draw->circle(50,50,50,0); // A circle that occupies 100x100px on the left } if ($showBoth) { $draw->popClipPath(); // Finish clipping path $draw->setClipPath('circle_left'); // Use the clipping path above } if ($showDrawing) { $draw->setFillColor('navy'); // This is the actual drawing color $draw->circle(100,50,100,0); // A circle that occupies 100x100px on the right } if ($showAny) $image->drawImage($draw); // Render $draw unto $image $image->setImageFormat('png'); // Tell ImageMagick how to render this header("Content-Type: image/png"); // Tell the browser how to render this echo $image; // Render the image into the browser http://php.net/manual/en/function.imagickdraw-pushclippath.php

« previous php.notes (#178661) next »