ImageMagick函数queryFontMetrics的结果不准确
Imagick::queryFontMetrics似乎不起作用。当我使用queryFontMetrics提供的度量来调整图像的大小时,一些字体仍然被切断。有什么想法吗 这是我的密码:ImageMagick函数queryFontMetrics的结果不准确,imagemagick,Imagemagick,Imagick::queryFontMetrics似乎不起作用。当我使用queryFontMetrics提供的度量来调整图像的大小时,一些字体仍然被切断。有什么想法吗 这是我的密码: if (!file_exists($cache['dirname'].'/'.$cache['basename'])) { try { $draw = new ImagickDraw(); $draw->setFont($font_path['dirname'].'/'.$font_path
if (!file_exists($cache['dirname'].'/'.$cache['basename'])) {
try {
$draw = new ImagickDraw();
$draw->setFont($font_path['dirname'].'/'.$font_path['basename']);
$draw->setFontSize($size);
$draw->setGravity(Imagick::GRAVITY_CENTER);
$draw->setFillColor($color);
$canvas = new Imagick();
$metrics = $canvas->queryFontMetrics($draw, $text);
$canvas->newImage($metrics['textWidth'], $metrics['textHeight'], "transparent", "png");
$canvas->annotateImage($draw, 0, 0, 0, $text);
$canvas->setImageFormat('PNG');
mkdir($cache['dirname'], 0777, true);
$canvas->writeImage($cache['dirname'].'/'.$cache['basename']);
header("Content-Type: image/png");
echo $canvas;
$canvas->clear();
$canvas->destroy();
$draw->clear();
$draw->destroy();
} catch(Exception $e) {
// Output an error message
echo 'Error: ', $e->getMessage(), "";
}
} else {
// Output the image
$canvas = new Imagick($cache['dirname'].'/'.$cache['basename']);
header("Content-Type: image/png");
echo $canvas;
}
好吧,看来我会亲自回答这个问题。经过相当多的研究,我发现基本上不可能从字体本身获得正确的度量。这是因为每个字体设计师可能会以不同的方式定义度量。继续操作的最佳方法是简单地使图像比需要的大很多(以确保不发生剪裁),然后使用trim命令: