【问题标题】:Imagemagick set interline spacing?Imagemagick设置行间距?
【发布时间】:2013-01-07 14:47:15
【问题描述】:

在使用 imagemagick 的应用程序中,设计是这样指定的:

   $draw->setFillColor(new ImagickPixel("#FFFFFF"));
   $draw->setstrokecolor(new ImagickPixel("#000000"));
   $draw->setstrokewidth(1);
   $draw->setFontSize(18);
   $draw->setfontweight(100);
   $draw->setFont("fonts/Impact.ttf");

我想以类似的方式设置行间间距,但所有示例都显示如下:

  convert -density 72 -pointsize 12 -interline-spacing 12  -font Arial \

如何在 PHP 中访问interline-spacing 命令行参数?

【问题讨论】:

  • 啊,所以你需要一个 PHP 命令。我误解了。删除我的答案
  • 我知道这就是我想要的!

标签: php imagemagick imagick


【解决方案1】:

根据this bug report,PHP 中添加了 interline-spacing,但我的 PHP 版本中没有 ImagickDraw::setTextInterlineSpacing 方法:

# php -v
PHP 5.3.3-7+squeeze14 with Suhosin-Patch (cli) (built: Aug  6 2012 20:08:59)

您可以查看它是否在另一个版本中。错误报告中还有一个补丁,您可以将其应用于您的 PHP 版本。否则,您可以使用 y 坐标和多次调用Imagick::annotateImage 编写自己的间距方法。比如:

<?php

$image = new Imagick();
$image->newImage(250, 300, "none");
$draw = new ImagickDraw();
$draw->setFillColor("black");
$draw->setFontSize(18);
$text = "Image Magick\nwowowow\nit's magical";
annotate_spaced($image, $draw, 0, 40, 0, $text, 40);
$image->setImageFormat("png");
header("Content-type: image/png");
echo $image;

function annotate_spaced($image, $draw, $x, $y, $ang, $text, $spacing)
{
   $lines = explode("\n", $text);
   foreach ($lines as $line)
   {
      $image->annotateImage($draw, $x, $y, $ang, $line);
      $y += $spacing;
   }
}

制作:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2011-04-22
    • 2013-07-20
    • 1970-01-01
    相关资源
    最近更新 更多