我能够像这样找到一个基本的自动换行功能
$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 );
这似乎工作正常,除了跟踪我认为它叫你知道线之间的空间太多,想法或想法如何解决这个或如果有更好的选择
答案 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;
}