Tak jsem přeci jenom nezapoměl
Tohle si umísti na začátek stánky, kde budeš chtít náhledy používat:
A tímto potom vyvoláš náhled obrázku:
Zde je kód souboru generator.php:
Kód: Vybrat vše
<?php
function ShowImage($file) {
$orig_path = "photos"; // adresar s obrazky
$thumb_path = "thumb"; // adresar s nahledy
$thumb_height = 200; // max vyska nahledu
$quality = 100; // nastaveni kvality jpeg souboru (0-100)
$orig_img = "".$orig_path."/".$file."";
$thumb_img = "".$thumb_path."/".$file."";
if(is_file($orig_img)) { //existuje vubec soubor?
$orig_dimensions = getimagesize($orig_img);
if(is_file($thumb_img)) { //nemame uz nahled hotovy?
echo "<img src=\"".$thumb_img."\" alt=\"\">\n";
}
else { //kdyz ne tak si ho vytvorime
$expl = explode(".",$file); //rozdelime si nazev a priponu
$ext = $expl[1]; //vezmeme si priponu
switch ($ext) { //podle pripony pouzijeme funkci
case "jpg":
case "jpeg":
$big = imagecreatefromjpeg($orig_img); break;
case "png":
$big = imagecreatefrompng($orig_img); break;
case "gif":
$big = imagecreatefromgif($orig_img); break;
}
$bw = imagesx($big);
$bh = imagesy($big);
$ratio = $bw / $bh; //spocitame si pomer stran
$sw = $thumb_height * $ratio; //zjistime sirku maleho obrazku
$sh = $thumb_height;
$small = imagecreatetruecolor($sw,$sh); //vytvorime si truecolor sablonu
imagecopyresampled($small,$big,0,0,0,0,$sw,$sh,$bw,$bh); //zmensime obrazek
imagejpeg($small,$thumb_img,$quality); //ulozime obrazek
ImageDestroy($small); //uvolnime misto v pameti
ImageDestroy($big);
echo "<img src=\"".$thumb_img."\" alt=\"\">\n";
}
}
else {
echo "Nenalezeno!\n";
}
}
?>
Má to pár nastavení (vrchní řádky), ale taky dost neodladěností se kterými se mi nechtělo camrat:
-veškeré soubory se převedou na jpeg formát a proto např. png nebo gif ztratí průhlednost (stejně jako u minulého skriptu)
-soubory menší než maximální rozměr se zvětší na jeho velikost (dtto)
-pokud změníš obrázek, musíš smazat i jeho náhled, aby se taky změnil (to není chyba, to je featura)
-jelikož nyní budeš zapisovat soubory, dej si pozor na nastavení správných práv (CHMOD 777) na FTP k adresáři, do kterého chceš náhledy ukládat
A pár vylepšení oproti starému skriptu:
-menší zátěž (skript je volán jen jednou a poté se provádí jen jeho vnořená funkce) + (skript si odkládá náhledy, pokud už náhled existuje, nový nevytváří = menší zátěž serveru)
-nastavuje se max výška a ne šířka (většinou ti strukturu stránky rozbije soubor moc vysoký než moc široký)
-místo černého čtverce o při nenalezeném souboru vypíše "nenalezeno!" - dá se vyměnit třeba za defultní obázek - viz konec skriptu.
-příponu nezjišťuje z posledních tří znaků, ale z textu za tečkou - takže už můžeš používat .jpg i .jpeg (jak je to správně neDOSově), ale na oplátku
nesmíš ve jménech souborů používat tečku, jinak se vystavuješ riziku chyby...