Imagick::annotateImage

(PECL imagick 2, PECL imagick 3)

Imagick::annotateImage使用文本注释图像

描述

public Imagick::annotateImage(
    ImagickDraw $draw_settings,
    float $x,
    float $y,
    float $angle,
    string $text
): bool

使用文本注释图像。

参数

draw_settings

包含绘制文本设置的 ImagickDraw 对象

x

文本左侧的水平偏移量(以像素为单位)

y

文本基线的垂直偏移量(以像素为单位)

angle

写入文本的角度

text

要绘制的字符串

返回值

成功时返回 **true**。

示例

示例 #1 使用 Imagick::annotateImage()

在空白图像上注释文本

<?php
/* 创建一些对象 */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );

/* 新图像 */
$image->newImage(800, 75, $pixel);

/* 黑色文本 */
$draw->setFillColor('black');

/* 字体属性 */
$draw->setFont('Bookman-DemiItalic');
$draw->setFontSize( 30 );

/* 创建文本 */
$image->annotateImage($draw, 10, 45, 0, 'The quick brown fox jumps over the lazy dog');

/* 为图像指定格式 */
$image->setImageFormat('png');

/* 使用头部输出图像 */
header('Content-type: image/png');
echo
$image;

?>

参见

添加注释

用户贡献的注释 4 个注释

9
alan at ridersite dot org
16 年前
如果设置了 ImagickDraw::setGravity ( int $gravity ),例如:$gravity= imagick::GRAVITY_CENTER。

那么,x 和 y 值会将文本从重力设置放置的位置偏移。

如果示例中包含:$draw->setGravity (Imagick::GRAVITY_CENTER);
$image->annotateImage($draw, 10, 45, 0, 'The quick brown fox jumps over the lazy dog');

文本将渲染到中心右侧 10 像素,向下 45 像素。

重力常量非常有用,因为它们可以避免计算可变文本字符串和字体大小的位置。
3
www dot query at gmail dot com
12 年前
$image->annotateImage($draw, 10, 45, 0, 'The quick brown fox');

如果第三个参数('Y' 值)为 0,则文本将不可见,因为文本是在图像上方打印的,而不是在图像上。

解决方案是根据您选择的字体大小,以大约 40 的 Y 值开始并进行试验。

此外:

当希望在照片上打印一些文本并使该文本与背景图像足够对比时,请使用 4 字节颜色代码来表示颜色和透明度。

它与 ImageMagick 的命令行指令 'convert' 中的 '-undercolor' 参数使用的 4 字节代码相同。

前 3 个字节是 RGB 颜色代码,第四个字节是透明度字节。

<?php
$picin
= new Imagick($pic1);
$picin->scaleimage(800,0);
$height = $picin->getimageheight();

$draw = new ImagickDraw();
$draw->setFillColor('#ffff00');
$draw->setFont('Eurostile');
$draw->setFontSize(21);
$draw->setTextUnderColor('#ff000088');
$picin->annotateImage($draw,40,$height-10,0,"Hallo");

$picin->writeimage($pic6);
?>

示例代码会在半透明红色背景上生成黄色文本。

$pic1 和 $pic6 之前定义为目录/文件字符串。
1
yakuza88 at op dot pl
7 年前
不适用于 CMYK 颜色值和图像。仅 RGB。
0
tuxedobob
7 个月前
请注意,$angle 以度为单位,并按顺时针方向旋转。允许使用负数。
To Top