PHP generovanie obrázkov

Programovacie jazyky, rady, poradňa...
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

PHP generovanie obrázkov

Príspevok od používateľa atlox »

Chalani PLS poradte čo robím zle?

Kód: Vybrať všetko

<html>
<body>gdfgdfgsfdg
<?php
	$ret = "9999";
	$dl = strlen($ret);
	$w = ($dl*10);
	$obr = Imagecreate($w, 37);
	$pozadie = ImageColorAllocate ($obr, 0, 0, 0);
	$obdl_c = ImageColorAllocate ($obr, 255, 170, 30);
	$text_b = ImageColorAllocate ($obr, 0, 0, 0);
	ImageFilledRectangle($obr, 2, 2, ($w-3), 34, $obdl_c);
	ImageString($obr, 6, 5, 10, $ret, $text_b);
	ImagePNG ($obr);
	ImageDestroy ($obr,"ko.png");
	$cas=mktime();
	$nazov="ko.png?".$cas;
	echo ('<img src="'.$nazov.'" width="120" height="37" />');
?>sdgsdsdgsdg
</body>
</html>
toto mi má vygenerovať obrázok do ktorého vpíše číslo 9999... ale miesto toho mi vypíše nejaké nezmyselné znaky a obrázok žiadny....
:?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Tá funkcia ti ten obrázok vloží priamo do html súboru. Musíš urobiť skript, ktorý ten obrázok bude generovať a odkaz na neho potom použiješ v img tagu (teda niečo ako <img src="number.php?n=9999">).

Keď to zmeníš na toto:

Kód: Vybrať všetko

ImagePNG ($obr,"ko.png"); 
ImageDestroy ($obr);
tak by to malo robiť čo chceš.
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

Príspevok od používateľa atlox »

Ma to byť niečo ako keď sa registruješ... nejaký overovací kód.... len raz ten obrázok vygeneruje a koniec... Chcel som ho vložiť do HTML, ale nejako mi to nejde... po vygenerovaní obrázku si nemôžem zobraziť zdrojový kód.... :(

//edit: THX :D už to fiči... som si nevšimol, že si editoval prispevok
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Tá upravená verzia robí to, čo potrebuješ. ešte by som tam zmenil toto:

Kód: Vybrať všetko

echo ('<img src="'.$nazov.'" width="'.$w.'" height="37" />');
(teda aby šírka bola taká, ako je široký obrázok).
Problém je ten, že keď bude naraz na tej stránke viac ľudí, tak si budú ten obrázok na disku prepisovať.
Keď sa to potom odošle, tak musíš mať niekde uložené, aký ten reťazec má byť. Takže by sa to dalo urobiť tak, ako som ti písal (teda, že by si urobil skript, ktorý by ten obrázok vygeneroval).
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

Príspevok od používateľa atlox »

:( uf... ale keď ja netušim absolutne ako na to.... :?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Ako kontroluješ, či bol zadaný správny reťazec?
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

Príspevok od používateľa atlox »

Ono ten reťazec sa mi zapíše do DB... potom porovnávam výber z databázy a kód z obrázka
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Skús niečo takéto:

Kód: Vybrať všetko

<?php
	$id = isset($_GET['id']) ? $_GET['id'] : "Error";

	// tu by sme mali do premennej $text nacitat ten kod pre ID, co je v databaze
	$text = "9999";

	$w = 80;
	$h = 40;
	$font = 6;

	$img = ImageCreate($w, $h);
	$c1 = ImageColorAllocate ($img, 0, 0, 0);
	$c2 = ImageColorAllocate ($img, 255, 170, 30);
	$c3 = ImageColorAllocate ($img, 0, 0, 0);

	ImageFilledRectangle($img, 0, 0, $w-1, $h-1, $c1);
	ImageFilledRectangle($img, 2, 2, $w-1-2, $h-1-2, $c2);

	$dx = ($w - strlen($text) * imagefontwidth($font)) / 2;
	$dy = ($h - imagefontheight($font)) / 2;
	ImageString($img, $font, $dx, $dy, $text, $c3);

	Header("Content-type: image/png");
	ImagePNG($img);
	ImageDestroy($img);
?>
Tie veľkosti obrázka môžeš mať v nejakom konfiguračnom súbore (lebo ich budeš potrebovať aj pri generovaní html).
Do toho html súboru potom dáš <img src="image.php?id=1234"> To číslo 1234 ukazuje do tej tabuľky a označuje riadok, kde je ten kód, čo sa má zobraziť.
Napísať odpoveď