PHP skript pro generování galerie obrázků 2.
Tento článek navazuje na minulý díl, kde jsme si udělali skript na automatické generování HTML galerie obrázků. Problém je ale v tom, že pro každý obrázek je potřeba udělat jeho náhled a tudíž nový soubor. Obvykle se to dělá v nějakém grafickém programu, což je činnost docela časově náročná. Podívejme se tedy na skript, který dobu desítek minut i případně několika hodin zkrátí na vteřiny.
Zzákladním předpokladem pro fungování tohoto skriptu je, že máme PHP s podporou GD. Ve Windows se tento problém dá vyřešit přidáním tohoto řádku na začátek souboru se skriptem: dl(„php_gd.dll“); a na Unixu pak takto: dl(„gd.so“);. Samozřejmě musíte dodat správnou cestu k souborům.
Jako minule, tak i teď uvedu zdrojový kód, umístěný v souboru zmenseni.php, po ucelených částech, ve kterých vysvětlím, jak funguje. Musíte je tedy spojit a vložit do zmiňovaného souboru.
|
Po klasickém HTML úvodu přichází kontrola, zda-li byl formulář odeslán, pokud nebyl, zobrazí se. Pokud byl odeslán, přikročí se k provádění samotnému zmenšování. Po úvodní podmínce si stejným způsobem jako v minulém díle načteme seznam souborů do pole $soubor. Nelekejte se těch tří podmínek, zjišťují, s jakým formátem si uživatel přeje pracovat a do proměnné $vstup_funkce a $vystup_funkce přiřadíme funkci specifickou pro zvolený grafický formát. Takováto proměnná se pak chová jako kdyby byla ta určitá přiřazená funkce. Má stejný počet parametrů i stejný výsledek.
|
Podívejme se na další kousek, tato část je tím kusem skriptu, kde skutečně dochází ke konverzi obrázků a proto se na ni podíváme podrobněji. Cyklus while() nám zajistí postupné načítání jmen souborů. Jak jsem už řekl, $vstup_funkce reprezentuje funkci ImageCreateFromGIF() resp. ImageCreateFromJPEG() nebo ImageCreateFromPNG(). Pro obrázek se musí vytvořit místo v paměti, to získáme pomocí zmíněných funkcí a reprezentuje jej proměnná $img_zdroj. Musíme taktéž vytvořit místo pro budoucí zmenšeninku a k tomu použijeme funkci ImageCreate(), které předáme parametry o velikosti obrázku. A teď funkce pro nás nejdůležitější: ImageCopyResized(). Tato funkce zkopíruje zdrojový obrázek do cíloveho, ale to není vůbec všechno co nabízí, dále zadáme jakou část vezme ze zdrojového obrázku a na jakou velikost se má upravit. Je možné obrázek také zvětšit, ale to je v našem případě k ničemu. PHP používá ke zmenšení poměrně jednoduchý postup a tudíž kvalita zmenšených obrázků není závratná, ale pro běžné galerie bohatě postačující.
Vraťme se ale zpět ke skriptu. Jako další přichází na řadu $vystup_funkce, která zastupuje jednu z ImageGIF(), ImageJPEG() nebo ImagePNG(). Tyto funkce slouží k zapsání obrázku na výstup. Jelikož jsme uvedli jako druhý parametr jméno souboru, bude výstup zapsán do něj. Na konec ještě uvolníme pamět, použitou pro uložení obrázku v paměti, funkcí Image_Destroy().
|
Tahle poslední část už neni z PHP hlediska ničím zajímavá, jen se zde provede zobrazení HTML formuláře, pokud jsme jej už neodeslali.
A máme to za sebou, ještě bych rád podotknul že podpora formátu GIF byla v GD 1.6 vyjmuta a nahrazena podporou PNG. Pokud chcete používat soubory GIF sežeňte si GD knihovnu 1.3 – 1.5. Teď už vám jen přeju hodně obrázků a co největší návštěvnost vašich galerií, ať už to budou obrázky aut, krajin atd.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
AI v programování: Jak používat GitHub Copilot (část 1)
12. února 2024 -
Jak se chránit před podvody na internetu – část 1
8. října 2024 -
Regulace digitálních služeb: Co přináší nové nařízení DSA?
20. února 2024
Nejnovější
-
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024 -
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024
agn
Srp 27, 2009 v 11:14dobrý den nenašel jsem jak změnit orámování náhledů lze to ? dekuji
david
Úno 11, 2010 v 14:35Dobry den .
Chcem sa vas spytat preco pri zmensovani obrazku dochadza k strate kvality ?Ako by sa to dalo riesit ?
Dakujem
Miroslav Kučera
Úno 11, 2010 v 14:39Tim myslite, ze vznika neostrost?