Центрировать текст по кривой, PHP GDPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Центрировать текст по кривой, PHP GD

Сообщение Anonymous »

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

Код: Выделить всё

$type_space=imagettfbbox($fontSize, 0, $fontname, $text);
$image_width = abs($type_space[4] - $type_space[0]) + 10;
Однако, исходя из этого, мне нужно найти способ регулировать начальный $угол в зависимости от ширины. Я поигрался со многими настройками, но, похоже, не нашел правильных математических вычислений. Любая помощь будет замечательной, спасибо!

Функция кривой

Код: Выделить всё

function imagettftextarc($image, $size, $angle, $x, $y, $r, $color, $fontfile, $text, $dir=false){
$sbox=imagettfbbox($size, 0, $fontfile, ' ');
$sbox=($sbox[2]-$sbox[0])*0.1;
$angle=$angle*M_PI/180;
foreach(preg_split('//u', $text) AS $t){
$px=$x+$r*cos($angle);
$py=$y+$r*sin($angle);
$dirangle=(360-(M_PI/2+$angle)*180/M_PI+($dir?180:0))%360;
imagettftext($image, $size, $dirangle, $px, $py, $color, $fontfile, $t);
$box=imagettfbbox($size, 0, $fontfile, $t);
$dx=$box[2]-$box[0];
$da=abs(asin(($dx+$sbox)/$r));
if($dir){
$angle-=$da;
}else{
$angle+=$da;
}
}
}
Возможное решение
Я не уверен, как это выполнить, но возможно, можно определить длину кривой если бы это был полный круг на 360 градусов, развернутый по горизонтали. Затем разделите новую ширину на развернутую ширину, чтобы получить значение, соответствующее тому, на сколько градусов ее необходимо изменить.

Подробнее здесь: https://stackoverflow.com/questions/484 ... rve-php-gd
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»