как обернуть текст в imagemagick

Я смог определить базовую функцию переноса слов, подобную этой

$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 ); 

и, похоже, работает нормально, за исключением того, что отслеживание, которое, как мне кажется, называется так, вы знаете, что пространство между линиями слишком много, и мысли или идеи о том, как исправить это или если есть лучший вариант

Related of "как обернуть текст в imagemagick"

Высота линии определяется метрикой шрифта. Конечно, вы можете добавить пустую строку, иначе вам нужно будет отображать одну строку за раз и вручную указывать смещение текста внутри изображения.

[РЕДАКТИРОВАТЬ] : по запросу OP, похоже, есть версия командной строки .

Синус. Я мог контролировать промежуток, в который я пошел,

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

Вы можете заставить ImageMagic рассчитать данные о показателях для вас: http://php.net/manual/en/function.imagick-queryfontmetrics.php .

Некоторые рефакторинг:

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