function setClipRule($strokeColor, $fillColor, $backgroundColor) { $draw = new \ImagickDraw(); $draw->setStrokeColor($strokeColor); $draw->setFillColor($fillColor); $draw->setStrokeOpacity(1); $draw->setStrokeWidth(2); //\Imagick::FILLRULE_EVENODD //\Imagick::FILLRULE_NONZERO $clipPathName = 'testClipPath'; $draw->pushClipPath($clipPathName); $draw->setClipRule(\Imagick::FILLRULE_EVENODD); $draw->rectangle(0, 0, 300, 500); $draw->rectangle(200, 0, 500, 500); $draw->popClipPath(); $draw->setClipPath($clipPathName); $draw->rectangle(200, 200, 300, 300); $imagick = new \Imagick(); $imagick->newImage(500, 500, $backgroundColor); $imagick->setImageFormat("png"); $imagick->drawImage($draw); header("Content-Type: image/png"); echo $imagick->getImageBlob(); }
<?php $draw = new ImagickDraw(); // clip $draw->setClipRule(Imagick::FILLRULE_EVENODD); var_dump($draw->getClipRule() === Imagick::FILLRULE_EVENODD); $draw->setClipUnits(10); var_dump($draw->getClipUnits()); // fill $draw->setFillColor('yellow'); var_dump($draw->getFillColor()->getColor()); $draw->setFillOpacity(0.5); printf("%.2f\n", $draw->getFillOpacity()); $draw->setFillRule(Imagick::FILLRULE_NONZERO); var_dump($draw->getClipRule() === Imagick::FILLRULE_NONZERO); // gravity $draw->setGravity(Imagick::GRAVITY_SOUTHEAST); var_dump($draw->getGravity() === Imagick::GRAVITY_SOUTHEAST); // stroke $draw->setStrokeAntialias(false); var_dump($draw->getStrokeAntialias()); $draw->setStrokeColor(new ImagickPixel('#F02B88')); var_dump($draw->getStrokeColor()->getColor()); $draw->setStrokeDashArray(array(1, 2, 3)); var_dump($draw->getStrokeDashArray()); $draw->setStrokeDashOffset(-1); var_dump($draw->getStrokeDashOffset()); $draw->setStrokeLineCap(Imagick::LINECAP_SQUARE); var_dump($draw->getStrokeLineCap() === Imagick::LINECAP_SQUARE); $draw->setStrokeLineJoin(Imagick::LINEJOIN_BEVEL); var_dump($draw->getStrokeLineJoin() === Imagick::LINEJOIN_BEVEL);