ImageMagic автоматический выбор размера шрифта на основе ширины/высоты коробки
У меня есть область изображения 160px на 350px мне нужно, чтобы быть в состоянии соответствовать абзацев текста в различной ширины и имеют размер шрифта идти вверх или вниз автоматически в зависимости от того, сколько свободного места осталось в окне.
Я думаю, что это может быть достигнуто с функцией Imagick :: queryFontMetrics(), который возвращает ориентировочный размер текста без печати текста в следующем массиве http://php.net/manual/en/imagick.queryfontmetrics.php
array (size=10)
'characterWidth' => float 30
'characterHeight' => float 30
'ascender' => float 27
'descender' => float -6
'textWidth' => float 150
'textHeight' => float 33
'maxHorizontalAdvance' => float 60
'boundingBox' =>
array (size=4)
'x1' => float 0
'y1' => float 0
'x2' => float 21.4375
'y2' => float 22
'originX' => float 151
'originY' => float 0
Что мне нужно формула, чтобы получить из данных эта функция дает максимально возможный размер шрифта в соответствии с зеленой рамкой.
Вот что я получил до сих пор, но я застрял в формуле:
$text_large = "Hello world Hello world";
//$text_small = "Hello world Hello world Hello world Hello world Hello world";
$img = new Imagick($path_to_image); //image 500 x 500
$draw = new ImagickDraw();
$draw->setFont("arial.ttf");
$draw->setGravity(Imagick::GRAVITY_NORTHWEST);
$draw->setFontSize(30); paragraph
$fm = $img->queryFontMetrics($draw, $text_large, true);
//this needs to be set automatically based on lenth of text
$optimal_font_size = (160/2) - ($fm["textWidth"]/2);
$draw->setFontSize($optimal_font_size);
$img->annotateImage($draw, 5, 50, null, $text_large);
...
Является ли это то, что вам нужно: http://stackoverflow.com/questions/5746537/how-can-i-wrap-text-using-imagick-in-php-so-that-it-is- draw-as-multiline-text/5746551 # 5746551? – Danack
Этот тоже, http://stackoverflow.com/questions/12231624/imagemagick-text-into-rectangle –