A jedeme dál ...
Človíčkův Weblog aneb Michal Horák bloguje

Náhledy obrázků v PHP

 | 2.11.2006

Určitě jste už někde na internetu potkali dynamické galerie, kde jste nahráli obrázek a hned jste mohli vidět jeho náhled. Díky PHP a knihovně GD jsou takovéto náhledy docela jednoduchou záležitostí.

Nejdříve vrátíme hlavičku obrázku, aby prohlížeč vrátil soubor jako obrázek, v našem případě vrátíme obrázek jako JPEG a stejně tak tento skript bere jen souboru ve formátu JPEG.

Je dobré ošetřit stav, kdy obrázek, ze kterého chceme udělat náhled neexistuje. Pokud neexistuje vypíšeme tuto skutečnost na náhled. Pokud obrázek existuje, vytvoříme z něj funkcí ImageCreateFromJPEG nový obrázek, který následně vložíme do náhledu a zmenšíme (ImageCopyResized) do námi chtěných rozměrů.

Zdrojový kód

<?php
Header
("Content-type: Image/jpeg");

$img="obrazek.jpg";

$width 130;
$height 96;

if (!
file_exists($img)){
    
$Im1 ImageCreate($width,$height);
    
$bgc imagecolorallocate ($Im1255255255);
    
$tc  imagecolorallocate ($Im1000);
    
imagefilledrectangle ($Im10015030$bgc);
    
imagestring ($Im1155"Obrázek není"$tc);
    
imagestring ($Im11515"k dispozici"$tc);
    
imageline ($Im10$height/2$width$height/2$tc);
}else{
    
$Im2 ImageCreateFromJPEG("data/images/$img");

    if(
ImageSX($Im2)>ImageSY($Im2))
    {
        
$pomer=ImageSY($Im2)/ImageSX($Im2);
        
$sirka=$width;
        
$vyska=$width*$pomer;
        
$posun_dolu=($height-$vyska)/2;
        
$posun_doprava 0;
    }else
    {
        
$pomer=ImageSX($Im2)/ImageSY($Im2);
        
$sirka=$height*$pomer;
        
$vyska=$height;
        
$posun_dolu0;
        
$posun_doprava = ($width-$sirka)/2;
    }
    
$Im1 ImageCreateTrueColor($sirka,$vyska);
    
    
imagefilledrectangle ($Im100$width$height$White);
    
ImageCopyResized($Im1,$Im2,0,0,0,0,$sirka$vyska,ImageSX($Im2),ImageSY($Im2));
}

ImageJpeg($Im1);

Destroy($Im1);
Destroy($Im2);
?>

Příspěvek vyšel ve Čtvrtek 2.11.2006 09:50 v kategorii Programování a byl 8473x zobrazen. Pokud se vám líbil můžete si jej zalinkovat: Linkuj.cz, Del.icio.us

Reklama:

Komentáře


[1] karosh | 26.11.2006 16:21

Gravatar pro karosh ahoj,
diky za skript... jen mam dotaz - zmensene obrazky maji celkem nic moc kvalitu. da se nejak zlepsit? napr. pouzitim nejake jine funkce?

diky predem za odpoved

[2] Michal Horák | 26.11.2006 17:39

Gravatar pro Michal Horák Jedinou možností, kou znám, jak ovlivnit kvalitu fotky je u funkce imagejpeg () natavit všechny 3 parametry, první parametr je daný obrázek, který máme v proměnné $Im1. Druhým parametrem je název vráceného souboru např. nahled.jpg a třetím parametrem je procento kvality, které můžete znát z různých programů, tedy můžete zadat číslo od 0 do 100.

[3] Afr0m3n | 29.11.2006 21:49

Díky, hodně pomohlo!

[4] Shorny | 24.4.2007 17:10

a co pouzit misto funkce ImageCopyResized() funkci ImageCopyResampled (). Rekl bych ze budete mit ohodne lepsi vysledek

Přidejte svůj komentář

Přidej komentář

Tipy na přečtení

Kategorie

Vyhledávání

Odkazy

Fotoblog

Poslední fotgrafie z fotoblogu

Nejčtenější příspěvky za poslední týden

Poslední příspěvky

"A jedeme dál ..." Človíčkův Weblog aneb Michal Horák bloguje. (c) Michal Horák (Človíček webdesign) 2006