Hallo,
ich bin grad dabei eine Funktion zu schreiben die mir einen Text in der Diagonalen
zentriert darstellt.
Nur leider muss da noch etwas falsch dran sein, da er den Text nicht wirklich
zentriert darstellt wird. ;(
Kann mir da einer weiterhelfen?
Thx Oliver
ich bin grad dabei eine Funktion zu schreiben die mir einen Text in der Diagonalen
zentriert darstellt.
Nur leider muss da noch etwas falsch dran sein, da er den Text nicht wirklich
zentriert darstellt wird. ;(
PHP:
function center($picsize, $txtsize){
/*
$picsize[0] = Breite
$picsize[1] = Hoehe
$txtsize[0] = x unten links
$txtsize[1] = y unten links
$txtsize[2] = x unten rechts
$txtsize[3] = y unten rechts
$txtsize[4] = x oben rechts
$txtsize[5] = y oben rechts
$txtsize[6] = x unten rechts
$txtsize[7] = y unten rechts
Diese Funktion gibt ein array mit den x und y Koordinaten zurück
um das Textfeld in dem Bild quer zu zentrieren.
*/
$alpha = 90 - rad2deg(atan($picsize[0] / $picsize[1])); // Der Winkel alpha in Grad (Diagonale zu Außenbildrand links)
$d = sqrt(pow($picsize[0], 2) + pow($picsize[1], 2)); //Diagonale des Außenbildes
$dt = sqrt(pow(($txtsize[2] - $txtsize[0]), 2) + pow(($txtsize[3] - $txtsize[1]), 2)); //Textlänge
//$dt = sqrt(pow(($r[2]-$r[0]), 2)+pow(($r[3]-$r[1]), 2));
$th = sqrt(pow(($txtsize[6]-$txtsize[0]), 2) + pow(($txtsize[7]-$txtsize[1]), 2));
$dr0 = ($th / 2) / tan(deg2rad($alpha));
$dt += 2*$dr0;
$dr = ($d - $dt) / 2; // Diagonale(d) - Textlänge(dt) durch 2
$dx = $dr / sin(deg2rad(90-$alpha));
$ddy = tan(deg2rad(90 - $alpha))*($dx-$txtsize[0]);
$ddy = $picsize[1] - $ddy;
return (array($dx, $ddy));
}
$font_size=300;
$txt = "Toller Text";
$size = getimagesize($pic);
$d = sqrt(pow($size[0], 2) + pow($size[1], 2));
$angle = 90-rad2deg(atan($size[0] / $size[1]));
do{
$font_size--;
$r = imagettfbbox($font_size, $angel, $font, $txt);
if($font_size < 1) die("abbbruch");
$dt = sqrt(pow(($r[2]-$r[0]), 2)+pow(($r[3]-$r[1]), 2));
$th = sqrt(pow(($r[6]-$r[0]), 2) + pow(($r[7]-$r[1]), 2));
$dr0 = ($th / 2) / tan(deg2rad($angle));
$dt += 2*$dr0;
}while($dt > $d);
$font_size *= 0.9;
$r = imagettfbbox($font_size, $angel, $font, $txt);
list($x, $y) = center($size, $r);
Kann mir da einer weiterhelfen?
Thx Oliver