Kod
Cze,
Mam taki dziwny problem z kodem - kod z roz.22 vademecum profesjonalisty. Najpierw miaem problem z czcionk ale sobie poradziem teraz pokazuje mi dziwny tekst.
[code]<?php
// sprawdzenie, czy dostpne s odpowiednie dane zmiennych
// zmienne to tekst_przycisku oraz kolor
$tekst_przycisku = $_REQUEST['tekst_przycisku'];
$kolor = $_REQUEST['kolor'];
if (empty($tekst_przycisku) || empty($kolor))
{
echo 'Stworzenie obrazka niemoliwe - formularz wypeniony niepoprawnie';
exit;
}
// utworzenie obrazka o prawidowym tle oraz sprawdzenie wielkoci
$ob = imagecreatefrompng($kolor.'-przycisk.png');
$szerokosc_obrazka = imagesx($ob);
$wysokosc_obrazka = imagesy($ob);
// przyciski musz mie 18-pikselowy margines od krawdzi
$szerokosc_obrazka_bez_marginesow = $szerokosc_obrazka - (2 * 18);
$wysokosc_obrazka_bez_marginesow = $wysokosc_obrazka - (2 * 18);
// Obliczenie pasujcego rozmiaru czcionki i odpowiednie jego zmniejszenie
// Rozpoczcie od najwikszego rozmiaru, ktry intuicyjnie pasowaby do przyciskw
$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 wsprzdna
$tekst_lewy = $bbox[0]; //lewa wsprzdna
$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 moliwy do odczytania rozmiar czcionki nie pasuje
echo 'Wprowadzony tekst nie pasuje do przycisku.<br />';
}
else
{
// odnaleziono pasujcy rozmiar czcionki
// teraz naley obliczy jego wsprzdne
$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 wspczynnika do lewej pozycji
$nad_linia_tekstu=abs($bbox[7]); // jak wysoko nad podstaw?
$tekst_y += $nad_linia_tekstu; //dodanie wspczynnika podstawy
$tekst_y -= 2; // wspczynnik dostosowania do ksztatu 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);
?>
Mam taki dziwny problem z kodem - kod z roz.22 vademecum profesjonalisty. Najpierw miaem problem z czcionk ale sobie poradziem teraz pokazuje mi dziwny tekst.
[code]<?php
// sprawdzenie, czy dostpne s odpowiednie dane zmiennych
// zmienne to tekst_przycisku oraz kolor
$tekst_przycisku = $_REQUEST['tekst_przycisku'];
$kolor = $_REQUEST['kolor'];
if (empty($tekst_przycisku) || empty($kolor))
{
echo 'Stworzenie obrazka niemoliwe - formularz wypeniony niepoprawnie';
exit;
}
// utworzenie obrazka o prawidowym tle oraz sprawdzenie wielkoci
$ob = imagecreatefrompng($kolor.'-przycisk.png');
$szerokosc_obrazka = imagesx($ob);
$wysokosc_obrazka = imagesy($ob);
// przyciski musz mie 18-pikselowy margines od krawdzi
$szerokosc_obrazka_bez_marginesow = $szerokosc_obrazka - (2 * 18);
$wysokosc_obrazka_bez_marginesow = $wysokosc_obrazka - (2 * 18);
// Obliczenie pasujcego rozmiaru czcionki i odpowiednie jego zmniejszenie
// Rozpoczcie od najwikszego rozmiaru, ktry intuicyjnie pasowaby do przyciskw
$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 wsprzdna
$tekst_lewy = $bbox[0]; //lewa wsprzdna
$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 moliwy do odczytania rozmiar czcionki nie pasuje
echo 'Wprowadzony tekst nie pasuje do przycisku.<br />';
}
else
{
// odnaleziono pasujcy rozmiar czcionki
// teraz naley obliczy jego wsprzdne
$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 wspczynnika do lewej pozycji
$nad_linia_tekstu=abs($bbox[7]); // jak wysoko nad podstaw?
$tekst_y += $nad_linia_tekstu; //dodanie wspczynnika podstawy
$tekst_y -= 2; // wspczynnik dostosowania do ksztatu 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);
?>
Pokazuje mi takie co po wykonaniu:
PNG IHDRCk)IDATx]K$W/Yn]nڲ56Y@ X Yi4ְDb!!X ƃGicWU~"{,nītt*"e;y4hQ)S1p#7`]+1=qBsN}܅EQA )dfk*,"0F"r&c1@0 8$Q" =K٣ι,<BTؙKmd


C to jest? Nie wiem, bdw mi nie wywala.