You can also use $imagickDraw()->setTextAlignmnent(Imagick::ALIGN_CENTER) and $imagickDraw->annotation(..) instead.
Imagick::queryFontMetrics
(PECL imagick 2.0.0)
Imagick::queryFontMetrics — Returns an array representing the font metrics
Description
Warning
This function is currently not documented; only its argument list is available.
Returns a multi-dimensional array representing the font metrics.
Parameters
- properties
-
ImagickDraw object containing font properties
- text
-
The text
- multiline
-
Multiline parameter. If left empty it is autodetected
Return Values
Returns an array containing the formats supported by Imagick. Throw an ImagickException on error.
Errors/Exceptions
Throws ImagickException on error.
Examples
Example #1 Using Imagick::queryFontMetrics():
Query the metrics for the text and dump the results on the screen.
<?php
/* Create a new Imagick object */
$im = new Imagick();
/* Create an ImagickDraw object */
$draw = new ImagickDraw();
/* Set the font */
$draw->setFont('/path/to/font.ttf');
/* Dump the font metrics, autodetect multiline */
var_dump($im->queryFontMetrics($draw, "Hello World!"));
?>
Imagick::queryFontMetrics
Pete 'the Pete' de Pijd
29-Jun-2009 01:18
29-Jun-2009 01:18
waage
30-Jan-2008 03:57
30-Jan-2008 03:57
You can use this to center a text within a box
<?php
$data = "Hello world";
$text = new ImagickDraw();
$text->setFontSize(12);
$text->setFont("Arial");
$boxWidth = 210;
$im = new Imagick();
$fm = $im->queryFontMetrics($text, $data, false);
$textXLoc = ($boxWidth / 2) - ($fm["textWidth"] / 2);
?>
$textXLoc is now the starting location you need to use to feed to your annotateImage() function.
