Fotogalerie

Chci mít na svých stránkách něco jako fotogalerii s možností vkládání. Problém mám v tom že ne každý mi tam vloží foto ve vhodných rozměrech a tím naruší vzhled stránky. Jak se to řeší? Mám dát při vkládání souboru upozornění na povolené rozměry a zamezit vložení nevhodných rozměrů? Nebo se to dělá přes nějaké funkce, které obrázek oříznout na požadovaný rozměr?
vidím že tu již podobné téma je...
Ten obrázek můžeš zmenšit na danný rozměr, nebo vytvořit malý náhled a z něho pak otevírat samostatný obrázek v původní velikosti v novém okně, kde tě už velikost nezajímá. Já zmenšuji obrázek na 200px třeba takhle:

$max_size = 200;
$img_zdroj = ImageCreateFromJPEG ("./obrazek.jpg");
$width = ImageSX ($img_zdroj);
$height = ImageSY ($img_zdroj);
if ($width > $height)
{
$velx = $max_size;
$vely = $max_size * ($height / $width);
}
elseif ($width < $height)
{
$velx = $max_size * ($width / $height);
$vely = $max_size;
}
elseif ($width == $height)
{
$velx = $max_size;
$vely = $max_size;
}
SetType ($velx, "integer");
SetType ($vely, "integer");
$img_cil = ImageCreate($velx,$vely);
ImageCopyResize($img_cil,$img_zdroj,0,0,0,0,$velx,$vely,$width,$height);
ImageJPEG ($img_cil,"./nahled.jpg");
ImageDestroy($img_zdroj);
ImageDestroy($img_cil);

Funguje to pouze na .jpg (pro ostatní musíš rozpoznat formát a použít jiné funkce - místo ImageJPEG() třeba ImagePNG() atd...). Funkce pracuje tak, že ze souboru ./obrazek.jpg udělá ./nahled.jpg tak aby se vešel do čtverce o velikosti hrany 200px ($max_size = 200;).
bfcxvvbcxbcbxcvxbcbcxbcvb
Když už jsem to sem napsal, mám s tímhle skriptem jeden problém. Můžete to vidět na:

http://avar.borec.cz/pokus/formular.php

Problém je v tom, že na WZ se poslané obrázky přemění na náhled dost divně. Některé mají třeba šedý závoj, jiné jsou skoro černé, kdežto další se zmenší zcela v pořádku. Doma mi moje PHP zmenšuje všechno v pohodě. Nevíte kde je problém. Dík za radu.
Já se chci taky zeptat:
Dá se nastavit v PHP komprese u JPG? A v jaký to dělá standartně?
Já se chci taky zeptat:
Dá se nastavit v PHP komprese u JPG? A v jaký to dělá standartně?
Velice jednoduché jak na to koukám , taky jsem něco podobnýho zkoušel, ale jsem začátečník a nechtělo mi to makat ani u mě v kompu. Někde jsem vyčetl že musím před užitím těchto funkcí načíst nějakou knihovnu. Něco jako
Dl ("php3_gd.dll");
To je knihovna GD. Ale myslim, ze ten kod co jsem napsal minule bude fachat i bez toho. Co se tyce komprese tak nic nevim, je to proste nejak nastaveny. Ja se tim nezabyvam.
No uvidíme každopádně to zkusím. Koukal jsem na tu stránku a máš pravdu ty obrázky jsou sprzněný.... čím to? Kde hostuješ? Nebude to právě v závislosti jaká ta GD knihovna je přikompilována? Já hostiuji na pipni.cz bezkonkurenční free hosting 500 MB zdarma...
Zas tak free není, poněvadž musíš platit za doménu, nebo to de jinak?
Gnd: No já právě hostuju tady na webzdarma.cz a fakt nevim proč se některé obrázky zprzní a jiné ne. Odpozoroval jsem ale, že čím víc barev je na obrázku tím je to lepší. Naopak pokud je obrázek hodně jednobarevný tak se to przní. Fakt nevim čím to je, ale myslim, že chyba je někde na serveru, takže s tim stejně nic nenedělám.
Jasně... ale 400 kč ročně mě nezrujnují.... pokud nevolíš doménu .cz
komprese u JPEG se nastavuje takto:

ImageJPEG($image,$ardresa,$komprese);

kde
$image je index obrázku (viz fce inagecreate)
$adresa je prostě url souboru, kam se má obrázek uložit (nepovinné)
$komprese číslo od 100 (nejlepší kvalita) do 0 (nejhorší kvalita)
Tebe ne...
2 Glurak: a myslis, ze by mi pomohlo napsat na ten treti radek od spoda ve vyse zverejnenem kodu:

ImageJPEG ($img_cil,"./nahled.jpg",100);

a tim by se prestaly nektere obrazky spatne vytvaret? Kazdopadne to jdu zkusit.
No odpovim si sam - nepomohlo to :o(
Sice s GD knihovnou pracuju, ale tohlensto nepoužívám, respektive jsem to ještě nepotřeboval. Ale každopádně doporučuji prostudovat PHP manuál.. Pokud se trochu umíš orientovat v PHP, tak by sesmolit nějakej skript neměl bejt větší problém...
viz. ImageJPEG ve function listu na www.php.cz
v tom scriptu je chyba.....!
Zkus misto

$img_cil = ImageCreate($velx,$vely);

pouzit

$img_cil = ImageCreateTrueColor($velx,$vely);