如何在imagemagick中包装文本

时间:2010-08-26 17:43:44

标签: php imagemagick word-wrap

我能够像这样找到一个基本的自动换行功能

 $draw = new ImagickDraw();
 $x = 0;
 $y=20;
 $angle = 0;
 $str = "some text for testing of a word wrap in imagemagick";
$str = wordwrap($str, 10,"\r");
$im->annotateImage( $draw, $x, $y, $angle, $str );

这似乎工作正常,除了跟踪我认为它叫你知道线之间的空间太多,想法或想法如何解决这个或如果有更好的选择

4 个答案:

答案 0 :(得分:2)

行高由字体指标决定。您当然可以添加一个空白行,否则您需要一次渲染一行并手动指定图像中文本的偏移量。

[编辑] :在OP请求中,似乎有command-line version of it

答案 1 :(得分:0)

正弦我可以控制每次渲染线条的间距

  $draw = new ImagickDraw();
  $x = 0;
  $y=20;
  $angle = 0;
  $padding = 10;
  $str = "some text for testing of a word wrap in imagemagick";
  $str = wordwrap($str, 10,"\r");
  $str_array = explode("\n",$str);
  foreach($str_array as $line)
    $im->annotateImage( $draw, $x, $y+$padding, $angle, $line );
  }

答案 2 :(得分:0)

您可以让ImageMagic为您计算指标详情:http://php.net/manual/en/function.imagick-queryfontmetrics.php

答案 3 :(得分:0)

一些重构:

$string = 'Some random Text here';

$y = 120;
$line_height = 50;
$str = wordwrap($string, 20,"\n");
$str_array = explode("\n",$str);
foreach($str_array as $line){
    $image->annotateImage($draw, 0, $y, 0, $line );
    $y += $line_height;
}