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
?>
ImagickDraw::pushClipPath
(PECL imagick 2.0.0)
ImagickDraw::pushClipPath — Inicia la definición de un trazado de recorte
Descripción
bool ImagickDraw::pushClipPath
( string
$clip_mask_id
)Advertencia
Esta función no está documentada actualmente, solamente se encuentra disponible la lista de parámetros.
Inicia la definición de un trazado de recorte el cuál está compuesto por cualquier número de comandos de dibujo y finalizado por un comando ImagickDraw::popClipPath().
Parámetros
-
clip_mask_id -
Id de la máscara de recorte
Valores devueltos
No devuelve ningún valor.
bogdan at moongate dot ro ¶
2 years ago
