Добрый вечер. Использую Imagick, для того что бы генерировать изображения на лету. ПО верх изображение пишу текст. Но столкнулся вот с такой проблемой. По умолчанию annotateImage делает line-height:130% (подбирал по принтскринам).
Т.е. если текст на две строки, то расстояние между строк 120-130%. Как можно настроить line-height ?
Вот такой у меня код!
| Код | $svgText = 'Unknow text'; $svgColor = '#000000'; $svgFon = 'transparent'; $svgRotate = 0; $svgWidth = 400; $svgHeight = 40; $svgAlign = 2; $svgSize = 20; $svgFont = 'arial'; if(isset($_GET['text']) && $_GET['text'] != ''){$svgText = htmlspecialchars_decode($_GET['text']);} if(isset($_GET['color']) && $_GET['color'] != '' && preg_match("/[0-9A-Za-z]/",$_GET['color'])) {$svgColor = '#'.$_GET['color'];} if(isset($_GET['fon']) && $_GET['fon'] != '' && preg_match("/[0-9A-Za-z]/",$_GET['fon']) && $_GET['fon'] != 'transparent') {$svgFon = '#'.$_GET['fon'];} if(isset($_GET['rotate']) && ($_GET['rotate'] == '90' || $_GET['rotate'] == '0' || $_GET['rotate'] == '270' || $_GET['rotate'] == '180')) {$svgRotate = $_GET['rotate'];} if(isset($_GET['w']) && $_GET['w'] != '' && preg_match("/[0-9]/",$_GET['w']) && $_GET['w'] <= 400) {$svgWidth = $_GET['w'];} if(isset($_GET['h']) && $_GET['h'] != '' && preg_match("/[0-9]/",$_GET['h'])) {$svgHeight = $_GET['h'];} if(isset($_GET['align']) && ($_GET['align'] == '1' || $_GET['align'] == '2' || $_GET['align'] == '3')) {$svgAlign = $_GET['align'];} if(isset($_GET['fontsize']) && $_GET['fontsize'] != '' && preg_match("/[0-9]/",$_GET['fontsize']) && $_GET['fontsize'] >= 5) {$svgSize = $_GET['fontsize'];} if(isset($_GET['fontname']) && $_GET['fontname'] != '' && file_exists('/usr/share/fonts/truetype/dinkyprint/'.$_GET['fontname'].'.ttf')) {$svgFont = $_GET['fontname'];} $im = new Imagick(); $text = new ImagickDraw(); $text->setFont('/usr/share/fonts/truetype/dinkyprint/'.$svgFont.'.ttf'); $text->setFillColor($svgColor); $text->setFontSize($svgSize); if($svgAlign == '1'){$text->setGravity (Imagick::GRAVITY_NORTHWEST);} elseif($svgAlign == '3'){$text->setGravity (Imagick::GRAVITY_NORTHEAST);} else{$text->setGravity (Imagick::GRAVITY_NORTH);} $im->newImage($svgWidth,$svgHeight, new ImagickPixel( $svgFon )); $xy = $im->queryFontMetrics($text, $svgText, true); if($xy['textWidth'] > $svgWidth){$svgWidth = $xy['textWidth'];} if($xy['textHeight'] > $svgHeight){$svgHeight = $xy['textHeight'];} $im->setImageFormat('png'); $im->annotateImage($text, 0, 0, $svgRotate, $svgText); header('Content-type: image/png'); echo $im; $im->destroy();
|
|