Tak tu máme můj první tutoriál na image funkce v PHP. Ukážeme si, jak
automaticky zmenšit všechny fotky v nějaké složce. Základem nám bude
složka, skript a hromada fotek, které chceme zmenšit. Abychom ve skriptu
nemuseli nic měnit, uděláme to takhle. Na localhostu nebo někde na serveru
vytvoříme složku ‘zmensovac’. Do ní nahrajeme skript index.php a
zároveň v ní vytvoříme další složku, kterou pojmenujeme ‘slozka’.
Do ní nahrajeme velké fotky, které chceme zmenšit. Jedinou věc si musíme
ovšem nějak zjistit. A to je cesta z rootu webu. Dá se zjistit, když si
vypíšeme proměnnou $_SERVER[‘SCRIPT_FILENAME’].
Nyní ale k našemu scriptu. Nejdřív do něj napíšeme konfigurační
nastavení:
<?php
$width = 250; /* šířka výsledné fotografie
*/
$path = "./slozka/"; /* umístění fotek od tohoto
scriptu (adresář s fotkami musí být vnořený ve složce s tímto scriptem)
*/
$memory_limit = 12; /* max. kapacita serveru pro image
funkce - liší se podle serveru */
$small = "small_"; /* název přidávaný k výsledné
fotce */
$root = "/php/htdocs/www/tutorialy/tut2/"; /* cesta z rootu webu do složky, ve
které je tento script - každý má tuto položku jinou, dle svého serveru
*/
?>
Dále projdeme zadanou složku a nascanujeme jí do pole s názvem $file, o co se stará funkce scandir();
<?php
// nascanuje
složku
$scan = scandir($path);
// projde složku
a vytvoří pole s obrázky
foreach($scan as $index
=> $value)
{
if($value !=
"." && $value != "..")
{
$file[] = $value;
}
}
?>
Nyní už zbývá jen vytvořit cyklus, který projde pole, ve kterém je uložen název fotky v dané složce. Použijeme foreach.
<?php
foreach($file as $index
=> $value)
{
/*
Zkontrolujeme, zda se jedná o fotografii ve formátu JPG a ne jiný soubor
*/
if(eregi("\.jpg$",$value) || eregi("\.jpeg$",$value) || eregi("\.jpe$",$value))
{
$src = $path.$value; // uložíme adresu fotky
$size = getImageSize($src); // zjistíme velikost
fotky
/*
Zkontrolujeme, zda není fotka, tak velká aby jí nezvládl server zpracovat
*/
$controll = $size[0] * $size[1] * 3;
$lim = $memory_limit * 1000 * 1000;
if($lim >
$controll)
{
// pokud jí server umí
zpracovat
// spočítáme poměr
stran
$pomer = $size[1] / $size[0];
$height = $pomer * $width;
/* Vytvoříme plátno a
načteme obrázek do proměnné */
$new
= imageCreateTrueColor($width,$height);
$image = imageCreateFromJpeg($src);
/* Zmenšíme a vložíme
obrázek do plátna */
imageCopyResized($new, $image, 0,
0, 0,
0, $width, $height, $size[0], $size[1]); // vloží obrázek do
plátna;
/* Načteme cestu z rootu webu
do proměnných */
$paths = $path;
$roots = $root;
/* Upravíme si cestu k fotce
tak, aby vyhovovala funkci ImageJpeg(); */
while(eregi("^\./",$paths)) $paths = eregi_replace("^\./","",$paths);
while(eregi("/$",$paths)) $paths = eregi_replace("/$","",$paths);
while(eregi("^/",$paths)) $paths = eregi_replace("^/","",$paths);
while(eregi("/$",$roots)) $roots = eregi_replace("/$","",$roots);
/*
Uložíme fotku do složky s názvem ‘small_PUVODNI_NAZEV.jpg‘
*/
imageJpeg($new,$roots."/".$path."/".$small.$value,80);
imageDestroy($new);
imageDestroy($image);
}
}
}
?>
Jen pro ty co by nepochopili, tyto tři bloky PHP kodu vložíme za sebou do jednoho PHP souboru :) Jinak doufám, že se vám tutoriál líbí, a že jste se něco málo přiučili!
Hlavní menu
Kategorie
Přihlásit
Anketa
Podporujeme
Ale jo, tenhle článek celkem jde. ;)