Witam!
Mam kod, z książki o php.
<?php
// sprawdzenie, czy dostępne są odpowiednie dane zmiennych
// zmienne to tekst_przycisku oraz kolor
$tekst_przycisku = 'TEKST';
$kolor = 'czerwony';
// utworzenie obrazka o prawidłowym tle oraz sprawdzenie wielkości
$ob = ImageCreateFromPng($kolor.'-przycisk.png');
if (!$ob)
{
echo 'Stowrzenie obrazka nie powiodło się.'; }
$szerokosc_obrazka = ImageSX($ob);
$wysokosc_obrazka = ImageSY($ob);
// przyciski muszą mieć 18-pikselowy margines od krawędzi
$szerokosc_obrazka_bez_marginesow = $szerokosc_obrazka - (2 * 18);
$wysokosc_obrazka_bez_marginesow = $wysokosc_obrazka - (2 * 18);
// Obliczenie pasującego rozmiaru czcionki i odpowiednie jego zmniejszenie
// Rozpoczęcie od największego rozmiaru, który intuicyjnie pasowałby do przycisków
$rozmiar_czcionki = 33;
// Trzeba wskazać GD2, gdzie znajdują się czcionki
putenv('GDFONTPATH=C:\WINDOWS\Fonts\\'); $nazwa_czcionki = 'Arial.ttf';
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 pasujący 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 podstawą? $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);
?>
Troszku zmieniony bo był błąd invalid font name.
Zwraca zamiast obrazka, dwie strony jakiegoś gówna
Kod
wf<^Ż×űłeßš{w~{Î=Ż{W03Ô0a|بaڍQ8ëQŁpÖŁFáŹ5Ăëľ5ÄĚ5łčX!BčĆLú&
DDDJ)ĽEÉ8>0 ó)DD)Ľ2
HD,&