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 条注释

martin at psinas dot com
12 年前
我发现创建字体/图像蒙版时需要此方法,并且需要将其设置为 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