如何使 IMagick Canvas 适合 PHP 中的字体大小?

How to fit IMagick Canvas to font size in PHP?

我想创建一个只包含 1 行文本的简单图像。类似这样:

http://www.imagemagick.org/Usage/text/#label

不过,我想将其保存在 php 的 Imagick 中。我知道字体大小,我希望 canvas 大小适合字体大小,就像示例中那样。不幸的是,我在 PHP 中没有看到使用 Imagick 执行此操作的方法。我为 PHP 找到的所有示例都要求我先定义 canvas 大小。

求助!

您可以通过查询字体指标来执行类似的操作,但可能还有我不知道的更好方法....

#!/usr/local/bin/php -f
<?php
    $image = new Imagick();
    $draw = new ImagickDraw();
    $draw->setFillColor('black');
    $draw->setStrokeAntialias(true);
    $draw->setTextAntialias(true);
    $draw->setFontSize(24);
    $text="Hello, I am a lovely label";
    // Set typeface
    $draw->setFont('Impact');
    // Calculate size
    $metrics = $image->queryFontMetrics($draw,$text,FALSE);
    $w=$metrics['textWidth'];
    $h=$metrics['textHeight'];
    $y=$metrics['ascender'];
    $image->newImage($w,$h,"steelblue","png");
    $image->annotateImage($draw,0,$y,0,$text);
    $image->writeImage("result.png");
?>