如何在PHP中将IMagick Canvas与字体大小相匹配?

时间:2016-03-03 13:25:42

标签: php image-processing imagemagick imagick

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

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

但是,我想将它保存在php的Imagick中。我知道字体大小,我希望画布大小适合字体大小,就像在示例中一样。不幸的是,我没有看到用PHP中的Imagick做到这一点的方法。我找到的所有PHP测试都要求我先定义画布大小。

帮助!

1 个答案:

答案 0 :(得分:2)

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

#!/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");
?>

enter image description here