Poszukalem z archiwum moich skryptow i znalazlem to co chcesz ;]
<?php
// sprawdzenie, czy dostępne sa odpowiednie dane zmiennych
// zmienne to tekst_przycisku oraz kolor
$tekst_przycisku = $_GET['tekst'];
$tryb = $_GET['tryb'];
if(empty($tekst_przycisku)) { $tekst_przycisku = '';
}
// utworzenie obrazka o prawidłowym tle oraz sprawdzenie wielkosci
if ('over' == $tryb) {
$ob = imagecreatefromgif('./img/buton_over.gif');
} elseif ('on' == $tryb) {
$ob = imagecreatefromgif('./img/buton_on.gif');
} else {
$ob = imagecreatefromgif('./img/buton_out.gif');
}
$szerokosc_obrazka = ImageSX($ob);
$wysokosc_obrazka = ImageSY($ob);
// przyciski musza mieć 4-pikselowy margines od krawędzi
$szerokosc_obrazka_bez_marginesow = $szerokosc_obrazka - (2 * 4); // 4 to margines
$wysokosc_obrazka_bez_marginesow = $wysokosc_obrazka - (2 * 4); // 4 to margines
// Obliczenie pasujacego rozmiaru czcionki i odpowiednie jego zmniejszenie
// Rozpoczęcie od największego rozmiaru, który intuicyjnie pasowałby do przycisków
$rozmiar_czcionki = 12;
// Trzeba wskazać GD2, gdzie znajdujš się czcionki
$nazwa_czcionki = 'tahoma.ttf'; // muszisz miec plik z czcianka w folderze gdzie jest skrypt
do
{
$rozmiar_czcionki--;
//obliczenie rozmiaru tekstu przy tym rozmiarze czcionki
$bbox=imagettfbbox($rozmiar_czcionki, 0, $nazwa_czcionki, $tekst_przycisku);
$tekst_prawy = $bbox[2]; //prawa współrzędna
$tekst_lewy = $bbox[0]; //lewa współrzędna
$szerokosc_tekstu = $tekst_prawy - $tekst_lewy; // jaki szeroki?
$wysokosc_tekstu = abs($bbox[7
] - $bbox[1
]); // jaki wysoki?
} while($rozmiar_czcionki > 8 &&
($wysokosc_tekstu > $wysokosc_obrazka_bez_marginesow ||
$szerokosc_tekstu > $szerokosc_obrazka_bez_marginesow)
);
if($wysokosc_tekstu>$wysokosc_obrazka_bez_marginesow ||
$szerokosc_tekstu>$szerokosc_obrazka_bez_marginesow)
{
// żaden możliwy do odczytania rozmiar czcionki nie pasuje
echo 'Wprowadzony tekst nie pasuje do przycisku.<br />'; }
else
{
// odnaleziono pasujacy rozmiar czcionki
// teraz należy obliczyć jego współrzędne
$tekst_x=$szerokosc_obrazka/2.0 - $szerokosc_tekstu/2.0;
$tekst_y=$wysokosc_obrazka/2.0 - $wysokosc_tekstu/2.0;
if ($tekst_lewy < 0)
$tekst_x += abs($tekst_lewy); //Dodanie współczynnika do lewej pozycji $nad_linia_tekstu=abs($bbox[7
]); // jak wysoko nad podstawa? $tekst_y+=$nad_linia_tekstu; //dodanie współczynnika podstawy
$tekst_y-=2; // współczynnik dostosowania do kształtu szablonu
$bialy=ImageColorAllocate($ob, 255, 255, 255);
ImageTTFText($ob, $rozmiar_czcionki, 0, $tekst_x, $tekst_y, $bialy, $nazwa_czcionki,
$tekst_przycisku);
Header('Content_type: image/png'); ImagePNG($ob);
}
ImageDestroy($ob);
?>
Tylko ze ja pobieram "tlo" na podstawie istniejacego obrazka. i jak tekst sie nie zmiescie na obrazku to wyswietli sie "Wprowadzony tekst nie pasuje do przycisku". Ale mysle ze poradzisz sobie z przerobieniem tego