ImagickDraw::pushClipPath
(PECL imagick 2, PECL imagick 3)
ImagickDraw::pushClipPath — クリップパスの定義を開始する
説明
警告
この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。
クリップパスの定義を開始します。 これは、任意の数の描画コマンドで構成され、最後は ImagickDraw::popClipPath() コマンドとなります。
パラメータ
clip_mask_id
-
クリップマスク ID。
戻り値
値を返しません。
+add a note
User Contributed Notes 1 note
bogdan at moongate dot ro ¶
13 years ago
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
?>