Generování obrázků – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Generování obrázků – PHP – Fórum – Programujte.comGenerování obrázků – PHP – Fórum – Programujte.com

 

Marek Štafl0
Stálý člen
29. 7. 2006   #1
-
0
-

Nazd?rek. M?m probl?m s generov?n?m obr?zk?, nebo sp?? s jejich zobrazov?n?m v prohl??e?i.
Kdy? chci obr?zek ulo?it na disk, v?echno funguje norm?ln?. Obr?zek se ulo?? a pak jej zobraz?m klasicky tagem <img>.
Jen?e, kdy? chci obr?zek p??mo odeslat prohl??e?i (bez ukl?d?n? na disk), tak to vypisuje kraviny. Respektive v IE se m?sto obr?zku vyp??e ??len? sm?s v?eljak?ch znak? a t?eba ve Firefoxu to nap??e, ?e obr?zek nelze zobrazit, proto?e obsahuje chyby.
Takhle to n?jak prov?d?m:



Header("Content-type: image/png");
$obrazek = ImageCreate(200,200);
// ...tady je k?d, kter? nakresl? obr?zek...
ImagePNG($obrazek);
ImageDestroy($obrazek);

Kdy? m?sto ImagePNG($obrazek); nap??u ImagePNG($obrazek, "obrazek.png");, tak to funguje. Obr?zek se ulo?? jako soubor "obrazek.png" na disk a pak ho vyp??u tagem <img>. Jen?e j? nechci, aby se ukl?dal, chci, aby se jen zobrazil v prohl??e?i a jinak po n?m nezbylo ani stopy.

Nahlásit jako SPAM
IP: ...–
Ondrej Juríček
~ Moderátor
0
Stálý člen
29. 7. 2006   #2
-
0
-



// ...tady je kód, který nakreslí obr?zek...


Zrejme tam budes mat chybu! Ak mozes hod sem cely kod.

Nahlásit jako SPAM
IP: ...–
Marek Štafl0
Stálý člen
29. 7. 2006   #3
-
0
-

OndreJ napsal:



// ...tady je kód, který nakreslí obrázek...


Zrejme tam budes mat chybu! Ak mozes hod sem cely kod.


Chyba tam těžko může být, když to funguje, když ten obrázek s nezměněným kódem dám uložit do souboru.
Ale pro jistotu celý kód je zde:


$obrazek = ImageCreate(300,70);
$pozadi = ImageColorAllocate($obrazek, 210,210,210);
$cislo = ImageColorAllocate($obrazek, 0,0,0);
$textfont = mt_rand(1,5);
$tf[1] = "fonty/arial.ttf";
$tf[2] = "fonty/georgia.ttf";
$tf[3] = "fonty/GOTHIC.TTF";
$tf[4] = "fonty/tahoma.ttf";
$tf[5] = "fonty/verdana.ttf";
$c1 = mt_rand(0,9);
$c2 = mt_rand(0,9);
$c3 = mt_rand(0,9);
$c4 = mt_rand(0,9);
$u1 = mt_rand(-45,45);
$u2 = mt_rand(-45,45);
$u3 = mt_rand(-45,45);
$u4 = mt_rand(-45,45);
ImageTTFText($obrazek, 36, $u1, 55, 50, $cislo, $tf[$textfont], $c1);
ImageTTFText($obrazek, 36, $u2, 105, 50, $cislo, $tf[$textfont], $c2);
ImageTTFText($obrazek, 36, $u3, 155, 50, $cislo, $tf[$textfont], $c3);
ImageTTFText($obrazek, 36, $u4, 205, 50, $cislo, $tf[$textfont], $c4);
$cas = Time();
ImagePNG($obrazek);
ImageDestroy($obrazek);

Ty fonty jsou samozřejmě v pořádku. Jak píšu, do souboru se ten obrázek uloží v pohodě, ale to já nechci.

Nahlásit jako SPAM
IP: ...–
Ondrej Juríček
~ Moderátor
0
Stálý člen
30. 7. 2006   #4
-
0
-

Dufam, ze pred header nemas nijaky kod, ktory ti robi vystup (echo atd.)?

Skus jednoduchy priklad ci ti pojde (ten musi ist).
Vytvor si subor v ktorom bude iba vygenerovanie obrazka:

image.php:



<?php
header("Content-type: image/png");
$img = imagecreate(200, 200);

$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
imageline($img, rand(0, 199), 0, rand(0, 199), 199, $black);

imagepng($img);
imagedestroy($img);
?>


a ked zadas do prehliadaca http://xxx/image.php, tak sa ti musi obrazok zobrazit! A samozrejme ked chces aby sa ti obrazok zobrazil v html stranke, tak:



<img src="http://xxx/image.php" alt="Vygenerovany obrazok" />


Prepac, ze to tak podrobne pisem, ale kazdemu nieje vzdy jasne, co musi spravit. Vela zaciatocnikov robi jednu chybu a to tu, ze samotny kod na vygenerovanie pisu do html stranky. A ked ti ani tento priklad nepojde, tak skus pozriet, ci mas GD (pripadne GD2) knihovnu aktivovanu v php.ini (ak to skusas na vlastnom servery).

Nahlásit jako SPAM
IP: ...–
Marek Štafl0
Stálý člen
30. 7. 2006   #5
-
0
-

Vela zaciatocnikov robi jednu chybu a to tu, ze samotny kod na vygenerovanie pisu do html stranky.


Tak to bude asi ta chyba. Nevěděl jsem, že kód na tvorbu obrázku nesmí být v tom samém souboru, ve kterém se má i zobrazit.
Vyzkouším to.

Nahlásit jako SPAM
IP: ...–
Marek Štafl0
Stálý člen
30. 7. 2006   #6
-
0
-

Jasně že to funguje. Vážně jsem nevěděl, že to tak nesmí být. Nikde jsem to ani nečetl.
Díky moc! :ok:

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 50 hostů

Podobná vlákna

Generování QR kódů — založil Aleš Krátký

Python - generovaní — založil Jandak

Generování tahů — založil Kuba

Generovani pole — založil quardi

Náhodné generování — založil to_jsem_ja

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý