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('Content-type: image/png');
echo
$image;

?>

參見

新增註解

使用者貢獻的註解 4 個註解

9
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');

文字會從中心向右呈現 10px,並向下 45px。

重心常數非常有用,因為它們可以省去計算可變文字字串和字型大小的位置。
3
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 先前已定義為目錄/檔案字串。
1
yakuza88 at op dot pl
8 年前
不適用於 CMYK 顏色值和圖片。僅適用 RGB。
0
tuxedobob
11 個月前
請注意,$angle 的單位是「度」,並以「順時針」方向旋轉。允許負數。
To Top