Image GD - Jak zmieścić tekst imagettftext czcionką ttf, skalując go tak by nie przekroczył określonego rozmiaru...: Różnice pomiędzy wersjami
(Utworzył nową stronę „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...”) |
(Brak różnic)
|
Wersja z 04:55, 1 mar 2012
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
$font = './arial.ttf'; $size= inteligent_size_locator(30,500,$font,$iin); imagettftext($img, $size, 0, 30, 190, $black, $font, $iin);