【问题标题】:Inaccurate results from ImageMagick function queryFontMetricsImageMagick 函数 queryFontMetrics 的结果不准确
【发布时间】:2012-06-27 23:02:33
【问题描述】:

Imagick::queryFontMetrics 似乎不起作用。当我使用 queryFontMetrics 提供的指标来调整图像大小时,一些字体仍然被截断。有什么想法吗?

这是我的代码:

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;
}

【问题讨论】:

    标签: imagemagick


    【解决方案1】:

    好的,看来我会自己回答这个问题。经过相当多的研究,我发现从字体本身获得正确的指标基本上是不可能的。这是因为每个字体设计师都可能以不同的方式定义指标。最好的方法是简单地使图像 比必要的大(以确保不会发生剪裁),然后使用修剪命令:http://www.php.net/manual/en/imagick.trimimage.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多