我想创建一个只包含1行文本的简单图像。与此类似:
http://www.imagemagick.org/Usage/text/#label
但是,我想将它保存在php的Imagick中。我知道字体大小,我希望画布大小适合字体大小,就像在示例中一样。不幸的是,我没有看到用PHP中的Imagick做到这一点的方法。我找到的所有PHP测试都要求我先定义画布大小。
帮助!
答案 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");
?>