Autor Zpráva
RAsik
Profil *
Mám stránku, kde na základě volby z formuláře se zobrazí graf ve formě obrázku. Nepodařilo se mi vymyslet všechno v jednom skriptu (probémy s hlavičkou header), tak to mám udělaný tak, že v jednom skriptu (formular.php) je formulář, ukládám jeho hodnoty do sešny nebo $_GET a pak v něm obrázek zobrazuju pomocí <img src="obrazek.php"...> nebo <img src="obrazek.php?hod=$hodnoty"...>
Ve skriptu obrazek.php se na základě předaných hodnot provede dotaz do DB, vytvoří se obrázek - třeba graf, mapa,... - pomocí imagecreate($obr, ...), atd... pak imagepng($obr).
Vypadá to nějak takhle:

I když všecho funguje skvěle, nevím, jestli je to elegantní řešení, jsem ryzí samouk a nemám kde koukat do skriptů profíků, jak to děláte vy?.

Ještě bych byl rád, když uživatel chce obrázek uložit (pomocí pravé myši a "uložit obrázek jako...") se mu nabízel nějaký rozumný název souboru a ne jen "untitled".
Zkoušel jsem do <img src...> doplňovat title, name i alt, ale bez úspěchu. Zkoušel jsem i obrázek ukládat pomocí imagepng($obr, "nejaky_nazev_obrazku.png") a pak zobrazovat <img src="nejaky_nazev_obrazku.png">, ale prohlížeč si ho pak pamatuje a při změně hodnot ve formuláři zobrazuje pořád ten původní. A i kdyby se tak nestalo, bojím se, že kdyby jiný uživatel zvolil jiné parametry, tak se obrázek přepíše novými daty a první uživatel by si mohl uložit ten novější. Nechci ale obrázkům dávat jedinečná jména, protože by se mi pak hromadily a přiznám se, nevím, jak je pak (automaticky) mazat.


Safra, nepodařilo se vložit odkaz na obrázek, ale snad jsem to napsal pochopitelně...

Moderátor juriad: Opraveno formátování
Bubák
Profil
RAsik:
ale snad jsem to napsal pochopitelně...
Nevím, odmítám to číst.
Chamurappi
Profil
RAsik:
Napiš sem do tohoto vlákna ten příspěvek ještě jednou, normálně, bez [pre], někdo pak smaže první tři příspěvky. Uvnitř zdrojových kódů se totiž vyhazuje některé formátování (včetně obrázků).
juriad
Profil
RAsik:
Ukládat obrázek skutečně nechceš, ale chceš poslat hlavičku, kterou prohlížeči napovíš, jak se má soubor jmenovat.

stackoverflow.com/questions/1395151/content-dispositionwhat-are-the-differences-between-inline-and-attachment
header("Content-Disposition", "inline;filename=jmeno-souboru.pripona");
Ten druhý (attachment) slouží k vynucení stažení obrázku, i když by jinak prohlížeč soubor zobrazil.
Je to popsáno v RFC6266
RAsik
Profil *
Sorry, o pre jsem nevěděl, moderátore díky za úpravu...
juriad
Zkusím na to kouknout, ale myslím, že ani s překladačem to nedám...
juriad
Profil
RAsik:
Prostě před imagepng zavolej header, který jsem uvedl v [#4].

Ohledně toho prvního problému by se hodil ten chybějící obrázek. Mít oddělený skript pro kreslení obrázků od skriptu stránky má smysl a nevidím na tom nic špatného. SESSION bych se vyhnul a raději posílal parametry GETem, pak půjde v několika tabech zobrazovat různé obrázky a půjde někomu poslat odkaz na něj.
Giga
Profil
RAsik
Možno sa mýlim, ale inak, ako oddeliť kreslenie obrázku od skriptu stránky, to nejde.
Takže to robíš dobre.
RAsik
Profil *
Takže zkusil jsem doplnit tu hlavičku, vyhodil původní header("Content-type: image/png"), nechal je obě, dal i obráceném pořadí a bohužel to nefunguje. Zkouším to na IE 8.0 (novější ani jiný prohlížeč naše firma neprovozuje), je-li to důležité...

Obrázek zkusím radši jen odkazem
ukázka, jako ilustrace bude stačit, protože - kupodivu - zdá se, že jsem to vymyslel dobře.
Ještě jednou děkuju všem.
juriad
Profil
RAsik:
Starší IE to nepodporují, viz greenbytes.de/tech/tc2231/#inlwithasciifilenamepdf. O jiném způsobu nevím, nejspíš to vůbec nepůjde.
Kajman
Profil
RAsik:

Jako src můžete např. vygenerovat
<img src="/grafy/nejaky_nazev_obrazku.png?hod=hodnoty">
A díky mod_rewrite cokoliv v neexistujícím adresáři grafy přepsat na ten php skript.
RewriteRule ^grafy/.* obrazek.php [L]
Prohlížeč nepozná, že je za tím php soubor a asi použije jako výchozí hodnotu nejaky_nazev_obrazku.png.
RAsik
Profil *
juriad
Aha, tak v tom je ten háček[b], zkusím na to vzpomenout, až najedem na něco novějšího (už by bylo načase...)
Kajman
<img src="/grafy/nejaky_nazev_obrazku.png?hod=hodnoty"> takhle přesně to dělám, jen GET různě střídám se SESSION.
Ale do mod_rewrite se pouštět radši nebudu, cosi jsem o tom četl a nemyslím, že je v mých silách to ovládnout. Každopádně díky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0