V tomto dílu se koněčně dostáváme k závěru celé aplikace. Posledním krokem, který podnikneme, bude vytvoření rozhraní, přes které by bylo možno plnit galerii požadovanými obrázky. Aby mohl náš manažer galerie pracovat správně, je nutné, abychom měli z velkých obrázků přichystané náhledy (zmenšeniny), které by sloužily jako odkazy na velké obrázky. K vytvoření náhledů můžeme použít množství programů. Já bych začátečníkům doporučoval program ACD See, který na mě celkově působí dobrým dojmem i jako prohlížeč obrázků. Existují samozřejmě i aplikace v PHP, kde pomocí GD knihovny pro práci s obrázky můžeme vytvořit poměrně kvalitní náhledy. PHP má v tomto ohledu ovšem jednu vadu - v novějších verzích GD knihovny již není implementována funkce pro práci s obrázky typu GIF. Je to z toho důvodu, že formát GIF se stává komerčním a jeho implementaci nelze volně šířit. Pokud tedy chcete PHP využívat v tomto ohledu, nezbývá vám, než se spolehnout na formáty JPG a PNG.
Když už budete mít náhledy obrázků hotové, je nutné je dostat na server do adresáře, který si v manažeru nastavíte. Velké obrázky potom nahrajete do druhého adresáře. Tímto máme "hrubé suroviny" připraveny. Základ celého manažeru tvoří následující kód:
if (!$nazev):
echo "<span style=\"color: red\">Musíte zadat název nové galerie.</span>";
else:
$nazev = Str_Replace (" ", "_", $nazev);
$dp = OpenDir("add"); //nastaveni adresare - vraci ukazatel $dp
$i = 0;
$soubor[$i] = ReadDir($dp);
while ($soubor[$i] == true): //vypis vsech souboru v nastavenem adresari
$pis = ReadDir($dp);
$i++;
$soubor[$i] = $pis; //$soubor[2] je prvnim souborem v adresari
endwhile; //zachována promenna $i, ktera je pocet souboru +2
for ($y=2; $y<=$i-1; $y++):
$c1 = Copy("add/".$soubor[$y]."", "images_big/".$nazev."_".$soubor[$y].""); //zkopírování obrázků do galerie
$c2 = Copy("add_small/".$soubor[$y]."", "images_small/".$nazev."_".$soubor[$y]."");
if (($c1 == true) && ($c2 == true)):
unlink ("add/".$soubor[$y]."");
unlink ("add_small/".$soubor[$y]."");
endif;
endfor;
CloseDir($dp); //zavreni asdresare nastaveneho v ukazateli $dp
connect();
for ($z=2; $z<=$i-1; $z++):
$ssize=Round(FileSize("images_big/".$nazev."_".$soubor[$z])/1024); //velikost v kb
$svelikost = GetImageSize("images_big/".$nazev."_".$soubor[$z]); //informace o souboru s indexy 0-3
$width=$svelikost[0];
$height=$svelikost[1];
$msvelikost = GetImageSize("images_small/".$nazev."_".$soubor[$z]); //informace o souboru s indexy 0-3
$mwidth=$msvelikost[0];
$mheight=$msvelikost[1];
@$prikaz = MySQL_Query("INSERT INTO gallery VALUES ('', '".$nazev."_".$soubor[$z]."', '$width', '$height', '$mwidth', '$mheight', '$ssize', '$nazev', '0', '0', 'NULL')");
if (!$prikaz):
echo "Nepodařilo se provést SQL příkaz.";
exit;
endif;
endfor;
echo "Vloženo.";
MySQL_Close();
endif;
|
Nyní vám skript trochu přiblížím. Část označená červeně má za úkol manipulovat s obrázky - kopírovat je do správných adresářů, přejmenovávat je a mazat původní obrázky. Při vkládání obrázků bude nutné vyplnit pouze jedno formulářové políčko - název galerie. Pokud budete chtít založit novou galerii, vložíte sem její název. Budete-li chtít vložit obrázky do stávající galerie, vložíte sem název galerie, ke které mají být obrázky přiřazeny. Po kliknutí na OK se provedou výše uvedené příkazy.
Nejprve zkontrolujeme, zda je vyplněn název. Pokud ano, odstraníme z názvu mezery a nahradíme je podtržítkem. Poté v cyklu while(...) načteme názvy souborů do proměnných a v cyklu for(...) je zkopírujeme se správnými názvy do adresářů. Ve skriptu je vidět, že malé obrázky budou v adresáři add_small a velké v add. Každému souboru bude přitom před vlastní jméno přidán název galerie, do níž patří. Proběhne-li všechno v pořádku, smažeme původní soubory a pokračujem vkládáním záznamů do databáze.
Část, která vkládá zápisy do databáze je označena modře. Do proměnných si uložíme údaje, které budeme vlkádat, jako například velikost obrázku, atd. Nakonec se provede SQL příkaz INSERT INTO gallery VALUES (...), kterým je operace zakončena a na obrazovku se nám vypíše Vloženo.
Abyste věděli, které galerie jsou už založeny, přidal jsem na začátek souboru manažeru pár řádků, které vypíšou jejich názvy z databáze. Tohle je pro dnešek všechno.
Kompletní zdrojový kód si můžete stáhnout ZDE.
Čevelíček Marek
|