note 91688 added to function.imagickdraw-circle

From: Date: Tue, 23 Jun 2009 13:31:47 +0000
Subject: note 91688 added to function.imagickdraw-circle
Groups: php.notes 
Request: Send a blank email to php-notes+get-157264@lists.php.net to get a copy of this message
This example creates a circle, one part green, one part red using kind of masks for transparency, which you might know from Photoshop. drawImage() is a quick helper for debug output (see code comments) to help you reproduce the process. -- function drawImage(Imagick $im) { $im->setCompressionQuality(100); $im->setImageFormat("jpg"); header("Content-Type: image/" . $im->getImageFormat()); echo $im; exit; } // define red/green layer $layer1 = new Imagick(); $layer1->newImage(100, 100, "none"); $red = new ImagickDraw(); $red->setFillColor("#FF0000"); $red->rectangle(0, 0, 50, 100); $green = new ImagickDraw(); $green->setFillColor("#00FF00"); $green->rectangle(50, 0, 100, 100); $layer1->drawImage($red); $layer1->drawImage($green); # debug output: two rectangles # drawImage($layer1); // define circle mask $layer2 = new Imagick(); $layer2->newImage(100, 100, "none"); $circle = new ImagickDraw(); $circle->setFillColor("#FFFFFF"); $circle->circle(50, 50, 48, 98); $layer2->drawImage($circle); # debug output: the mask # drawImage($layer2); // use mask $layer1->compositeImage($layer2, Imagick::COMPOSITE_DSTIN, 0, 0); # debug output: the result of our mask usage # drawImage($layer1); // define background $layer3 = new Imagick(); $layer3->newImage(100, 100, "none"); $layer3->compositeImage($layer1, Imagick::COMPOSITE_DEFAULT, 0, 0); // define ring as background $layer4 = new Imagick(); $layer4->newImage(100, 100, "white"); // this is our background $ring1 = new ImagickDraw(); $ring1->setFillColor("black"); $ring1->circle(50, 50, 50, 99); $layer4->drawImage($ring1); # debug output: this is a black circle (not our mask, which is similar, but a little bit smaller) # drawImage($layer4); // use black circle as background (this creates our circle border) $layer4->compositeImage($layer3, Imagick::COMPOSITE_DEFAULT, 0, 0); # debug output: here we go with our circle border # drawImage($layer4); // draw separator between red and green rectangle (now semi circles) $line = new ImagickDraw(); $line->setStrokeWidth(1); $line->setStrokeColor("black"); $line->line(50, 1, 50, 99); // add our separator line $layer4->drawImage($line); drawImage($layer4); -- To understand how the COMPOSITE_* constants effect the image merging process, see here: http://www.imagemagick.org/Usage/compose/#duff-porter ---- Server IP: 212.124.37.9 Probable Submitter: 89.244.130.51 ---- Manual Page -- http://www.php.net/manual/en/function.imagickdraw-circle.php Edit -- https://master.php.net/note/edit/91688 Del: integrated -- https://master.php.net/note/delete/91688/integrated Del: useless -- https://master.php.net/note/delete/91688/useless Del: bad code -- https://master.php.net/note/delete/91688/bad+code Del: spam -- https://master.php.net/note/delete/91688/spam Del: non-english -- https://master.php.net/note/delete/91688/non-english Del: in docs -- https://master.php.net/note/delete/91688/in+docs Del: other reasons-- https://master.php.net/note/delete/91688 Reject -- https://master.php.net/note/reject/91688 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#157264) next »