Imagick::annotateImage
(PECL imagick 2, PECL imagick 3)
Imagick::annotateImage — 画像にテキストによる注記を加える
説明
public Imagick::annotateImage(
ImagickDraw
float
float
float
string
): bool
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;
?>
+add a note
User Contributed Notes 4 notes
alan at ridersite dot org ¶
17 years ago
If ImagickDraw::setGravity ( int $gravity ) has been set, e,g; with $gravity= imagick::GRAVITY_CENTER.
Then, the x and y values offset the text from where the gravity setting would have placed it.
If the example included: $draw->setGravity (Imagick::GRAVITY_CENTER);
$image->annotateImage($draw, 10, 45, 0, 'The quick brown fox jumps over the lazy dog');
The text would be rendered to the right 10px and down 45px from the center.
Gravity constants are very useful as they can save having to calculate the placement of variable text strings and font sizes.
www dot query at gmail dot com ¶
13 years ago
$image->annotateImage($draw, 10, 45, 0, 'The quick brown fox');
If the third parameter, the 'Y' value, is 0, the text will be invisible because the text is printed ABOVE the image - not on the image.
The solution is to start, depending on your chosen font size, with a Y value of about 40 and experiment.
[Also:]
When wishing to print some text on a photograph and make that text sufficiently contrasting to the background image, use a 4 byte code for colour and transparency.
It is the same 4 byte code using by the parameter '-undercolor' in ImageMagick's command lime instruction 'convert'.
The first 3 bytes are the RGB colour code and the fourth byte is the transparency byte.
<?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);
?>
The example code produces yellow text on a semi-transparent red background.
$pic1 and $pic6 were previously defined as directory/file strings.