PHP Conference Japan 2024

Imagick::setImageMatte

(PECL imagick 2, PECL imagick 3)

Imagick::setImageMatte設定影像遮罩通道

描述

public Imagick::setImageMatte(bool $matte): bool

設定影像遮罩通道。如果 Imagick 是針對 ImageMagick 版本 6.2.9 或更新版本編譯的,則此方法可用。

參數

matte

True 會啟用遮罩通道,而 false 會停用它。

回傳值

成功時回傳 true

新增註解

使用者貢獻的註解 1 則註解

6
martin at psinas dot com
13 年前
我發現建立字型/影像遮罩時需要此方法,並且需要將其設定為 false,否則遮罩將不會生效。以下是一個範例

<?php

// 建立物件
$image = new Imagick('myImage.png');
$watermark = new Imagick();
$mask = new Imagick();
$draw = new ImagickDraw();

// 定義尺寸
$width = $image->getImageWidth();
$height = $image->getImageHeight();

// 建立一些調色盤
$watermark->newImage($width, $height, new ImagickPixel('grey30'));
$mask->newImage($width, $height, new ImagickPixel('black'));

//浮水印文字
$text = 'Copyright';

// 設定字型屬性
$draw->setFont('Bookman-Demi');
$draw->setFontSize(20);
$draw->setFillColor('grey70');

// 定位文字
$draw->setGravity(Imagick::GRAVITY_SOUTHEAST);

// 在浮水印調色盤上繪製文字
$watermark->annotateImage($draw, 10, 12, 0, $text);

// 在遮罩調色盤上繪製文字
$draw->setFillColor('white');
$mask->annotateImage($draw, 11, 13, 0, $text);
$mask->annotateImage($draw, 10, 12, 0, $text);
$draw->setFillColor('black');
$mask->annotateImage($draw, 9, 11, 0, $text);

// 顯然遮罩需要此設定才能運作
$mask->setImageMatte(false);

// 將遮罩套用至浮水印
$watermark->compositeImage($mask, Imagick::COMPOSITE_COPYOPACITY, 0, 0);

// 在影像上覆蓋浮水印
$image->compositeImage($watermark, Imagick::COMPOSITE_DISSOLVE, 0, 0);

// 設定輸出影像格式
$image->setImageFormat('png');

// 輸出新影像
header('Content-type: image/png');
echo
$image;

?>
To Top