В приложении с использованием 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");
Я хотел бы установить интерлайн-интервал в стиле similair, но все образцы отображаются следующим образом:
convert -density 72 -pointsize 12 -interline-spacing 12 -font Arial \
Как я могу получить доступ к параметру командной строки interline-spacing
в PHP?
Согласно этому отчету об ошибке , интерлайн-интервал был добавлен в PHP, но метод ImagickDraw::setTextInterlineSpacing
не входит в мою версию PHP:
# 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; } }
Делает: