Malé rozlišení obrázků - jak na něj...
4 příspěvky
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Ahoj, mám takovej problémek... Chtěl bych automaticky generovat náhledy na obrázky. Je blbost zadávat (když originál má třeba 640*480) velikost <img width=\"150\" height=\"100\">, protože počítač stejně bude stahovat plnou velikost (nějakých 100kB. Chtěl bych proto dynamicky vytvářet náhled na originální fotku v malém rozlišení a tedy i s malou velikostí, aby chudáci uživatelé nemuseli tahat hden taký "kvanta" dat... Poraďte, jak na to, prosím, fakt si s tím nevím rady...
-
Na to použij GD library. Obrázek do stránky vložíš takto: <img src="images.php?img=foto.jpg"> a toto das do souboru images.php: <? //nastaveni velikosti nahledu define(MAX_WIDTH, 150); define(MAX_HEIGHT, 150); /* funkcia na vykreslenie error obrázku parameter - retazec, ktorý sa má vypísat ako ERROR */ function ErrorImage($string) { header ("Content-type: image/png"); $im = imagecreate (70, 70); $background_color = imagecolorallocate ($im, 90, 90, 90); $text_color = imagecolorallocate ($im, 255, 255, 255); imagestring ($im, 5, 5, 5, " ? ", $text_color); imagepng ($im); exit(); } /* ak subor existuje - získanie informácií o obrázku $size[0] - šírka $size[1] - výška $size[2] - formát */ $obr = "slozka_s_obrazky/$img"; if(file_exists($obr)) $size=getimagesize($obr); /* ak subor neexistuje - zobrazenie error oébrazku */ else ErrorImage("Soubor neexistuje"); /* ak zadaná šírka je menšia ako 1px, alebo nie je císlo, tak sa vykreslí error obrázok to isté platí aj pre výsku */ if(MAX_WIDTH<1) ErrorImage("Nekorektni sirka nahledu"); if(MAX_HEIGHT<1) ErrorImage("Nekorektni vyska nahledu"); /* pridelenie hlavicky */ switch($size[2]) { case 1: $type="gif"; header("Content-type: image/png"); break; case 2: $type="jpeg"; header("Content-type: image/jpeg"); break; case 3: $type="png"; header("Content-type: image/png"); break; /* ak je to iný formát obrázku alebo to nie je obrázok, vykreslenie error obrázku */ default: ErrorImage("Nekorektni typ souboru"); } /* výpocet novej šírky a výšky */ $scale_width=MAX_WIDTH/$size[0]; $scale_height=MAX_HEIGHT/$size[1]; $scale=($scale_width <= $scale_height ? $scale_width : $scale_height); $new_width=ceil($scale*$size[0]); $new_height=ceil($scale*$size[1]); /* vytvorenie cielového a zdrojového obrázku */ $im = imagecreatetruecolor($new_width,$new_height); switch($type) { case "gif": $res_im=imagecreatefromgif($obr); break; case "jpeg": $res_im=imagecreatefromjpeg($obr); break; case "png": $res_im=imagecreatefrompng($obr); break; } /* kopírovanie oblasti do cielového obázku */ imagecopyresampled($im, $res_im, 0, 0, 0, 0, $new_width+1, $new_height+1, $size[0], $size[1]); /* zrušenie zdrojového obrázku */ imagedestroy($res_im); /* výstup náhladu do browsera */ switch($type) { case "jpeg": imagejpeg($im); break; case "gif": case "png": imagepng($im); break; } ?>
-
a zvladnete do toho nekdo jeste vlozit logo serveru? Nebo třeba šedej nápis adresy, za kterým bude normalne obrazek
-
Ježiš, zkus trochu vlastní snahy. O GD knihovně je na netu spousta článků (zkusil bych interval.cz ...), tak se to můžeš naučit a podle toho vyrobit. I když většinou stačí manuál a trocha logiky.