Image GD - Jak zmieścić tekst imagettftext czcionką ttf, skalując go tak by nie przekroczył określonego rozmiaru...
Tytuł strony jest dosyć idiotyczny, ale problem poważny. Załóżmy że mamy do dyspozycji pole tekstowe do wypełnienia o rozmiarze 500px. Domyślnie chcemy napisać w nim sobie tekst, czcionką TTF, np arial, o rozmiarze 30.
Jeżeli napiszemy "AAAAAAAAAAAA" ciąg zmieści się bez problemu. Jeżeli napiszemy "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - ciąg się nie zmieści zostawiając nas z problemem.
W związku z powyższym napisana została taka oto prosta funkcja wykorzystująca rekurencję oraz imagettftext w celu sprawdzenia wymiarów. Jeżeli żądane przez nas wymiary zostaną przekroczone!, wtedy czcionka zostanie zmniejszona o 1 rozmiar w dół... Jeżeli w dalszym ciągu będzie "wystawać" poza obręb, proces się powtórzy... do czasu kiedy definitywnie "tekst" zmieści się w określonej długości...
Dziękuję, dobranoc... a oto hasający skrypt...
function inteligent_size_locator($size,$max_width,$font,$text) { $dimensions = imagettfbbox($size, 0, $font, $text); if($dimensions[2]>$max_width) { return inteligent_size_locator($size-1,$max_width,$font,$text); } return $size; }
Jej użycie
$iin='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; $font = './arial.ttf'; $size= inteligent_size_locator(30,500,$font,$iin); imagettftext($img, $size, 0, 30, 190, $black, $font, $iin);