PHP Conference Japan 2024

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 输出图像 */
header('Content-type: image/png');
echo
$image;

?>

参见

添加注释

用户贡献的注释 4 条注释

alan at ridersite dot org
17 年前
如果已设置 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 像素。

重力常量非常有用,因为它们可以避免计算可变文本字符串和字体大小的放置位置。
www dot query at gmail dot com
13 年前
$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 之前被定义为目录/文件字符串。
yakuza88 at op dot pl
8 年前
不支持CMYK颜色值和图像。仅支持RGB。
tuxedobob
11个月前
请注意,$angle 的单位是度,旋转方向为顺时针。允许使用负数。
To Top