strona glownaartykulydownloadszukajreklamakontaktavataryregulamin

Witaj na szabloniki.com!
Na naszej stronie znajdziesz: dodatki na bloga, darmowe szablony stron, szablony na bloga, PHP-Fusion Themes (szablony do PHP-Fusion), generator bannerów, wskaznik PageRank strony, skrypty, avatary, tutoriale do Photoshopa, tla pod bannery, tanie szablony za SMS.

Najnowsze artykuły:
Grafika i zdjęcia do projektów
Okrągły button
Usuwamy zmarszczki
Skróty klawiszowe
Miniaturkowy świat
Zdjęcia

Webmaster i grafik
dodatki, skrypty, generatory

avatarytutoriale do photoshopa

Szablony za SMS

+ Wszystkie (89)
+ 1 kolumna (33)
+ 2 kolumny (35)
+ Czarne (8)
+ Czerwone (16)
+ Niebieskie (16)
+ Opisy gg (5)

+ PHP-Fusion 6 (9)
+ PHP-Fusion 7 (4)
+ Pomara&#324czowe (4)
+ Portale (58)
+ Radio internetowe (4)
+ Zielone (10)
Polecamy
Tutaj kupisz odzież męską w dużych rozmiarach
Automagiczna galeria zdjęć
Tym razem, zaprezentuję Państwu jak przy użyciu PHP zbudować galerię zdjęć :) Oczywiście można wykonać takową w samym HTML ale po co utrudniać sobie życie i tracić czas na pisanie kodu jak ktoś może zrobić to za nas. Dzięki PHP nie będziemy również musieli tworzyć miniaturek naszych fotografii - powstaną one automatycznie. Nasz 'System' będzie składał się z dwóch plików:



mini.php - służącego do wygenerowania podglądu zdjęcia, oraz
galeria.php - który z wykorzystaniem tego pierwszego stworzy całą galerię.

Generowanie albumu będzie polegać na wyświetleniu miniatur wszystkich zdjęć z zadanego katalogu. Miniaturki tworzone będą dynamicznie przy użyciu funkcji PHP, dzięki czemu unikniemy konieczności tworzenia ich ręcznie bądź zmniejszania dużych obrazków tagami html-a co już w ogóle jest pomysłem wczesnoporonnym. Będziemy mogli zdefiniować ilość zdjęć wyświetlanych na jednej stronie (wierszy i kolumn), ich jakość oraz ustalać wielkość. Ponadto dodamy możliwość podpisywania fotografii. Jeśli w katalogu znajdzie się plik o takiej samej nazwie co zdjęcie lecz z rozszerzeniem .txt jego zawartość zostanie uznana za opis. A więc do dzieła...



Wersja dla niecierpliwych:
- Gotowy przykład działania można obejrzeć tutaj
- A kody źródłowe całego pomysłu tu

Wersja dla cierpliwych:

Ponieważ najlepiej jest uczyć się na przykładach, zamieszczam kod źródłowy wraz z komentarzami które nie powinny zostawić niedomówień :P Jeśli masz problem ze zrozumieniem którejś instrukcji polecam lekturę http://php.net - tam znajdziesz szczegółowy opis każdej z nich.



Plik galeria.php


<html>
<body>
<center>
<table style="border: 1px solid black; text-align: center"><tr><td>Galeria

<?php

/*
Ustalamy w jakim katalogu znajduja sie zdjecia oraz
ile wierszy i kolumn bedzie tworzyc galeria jednej strony.
*/
define('KATALOG_ZDJEC','./img/');
define('WIERSZY',2);
define('KOLUMN',2);

/*
Przeczesujemy wybrana lokalizacje w poszukiwaniu plikow .jpg
i zapujemy ich nazwy w tablicy $album. Wszelkie informacje o
plikach beda teraz odczytywane z tej tablicy dzieki czemu ograniczymy
mielenie dyskiem do minimum :)
*/
$x=0;
foreach (glob(KATALOG_ZDJEC."*.jpg") as $zdjecie) $album[$x++]=$zdjecie;

/* Zliczamy ile fotek lacznie pojawi sie na jednej stronie oraz calkowita ich liczbe */
$na_stronie=WIERSZY*KOLUMN; $razem=count($album);

/*
Dzieki czemu mozemy wyliczyc liczbe stron. Czesc calkowita z dzielenia
liczby fotek przez liczbe zdjec na jednej stronie da laczna liczbe stron.
Jesli zostanie jakas reszta z dzielenia to znaczy ze potrzebujemy jeszcze
jednej strony dla wyswietlenie kilku ostatnich zdjec
*/
$stron=floor($razem/$na_stronie); $stron+=$razem % $na_stronie ? 1:0;

/*
Zmienna $pokaz_strone przechowuje nr. akutalnej strony do wyswietlenia.
Jej wartosc odczytywana jest z adresu strony (np. https://www.szabloniki.com/galeria.php?pokaz_strone=4)
Jesli wartosc nie zostala ustalona (https://www.szabloniki.com/galeria.php)
przyjmujemy ze wyswietlamy strone 1
*/
$pokaz_strone=$_GET['pokaz_strone']; if (!isset($pokaz_strone)) $pokaz_strone=1;


/*
Bedziemy odczytywac tylko te fragmenty tablicy $album ktore zawieraja
zdjecia wystepujace na danej stronie, dlatego potrzebujemy ustalic
jaki bedzie to obszar
*/
$start=($pokaz_strone-1) * $na_stronie;
$stop=($pokaz_strone==$stron) ? $razem % $na_stronie: $na_stronie; $stop+=$start;

echo "<table style='border: none'><tr>";

/* Z wybranych elementow rusyjemy tabelke */
for ($x=$start;$x<$stop;$x++){

/* Jesli osiagnieto ustalona liczbe kolumn przechodzimy do nastepnego wiersza */
if (!($x % KOLUMN)) echo "</tr><tr>";

/*
Tworzymy obrazek ktory wygenerowany zostanie przez skrypt mini.php na podstawie
przekazanej nazwy pliku
*/
echo "<td><a href=\"".$album[$x]."\" target=\"_blank\"><img src=\"mini.php?fotka="."{$album[$x]}\"></a>";

/*
Ponizsze linie sprawdzaja czy w katalogu ze zdjeciem istnieje taki sam
plik z roszerzeniem .txt. Jesli tak, wyswietla jego zawartosc pod zdjeciem
*/
list($info)=explode('.',basename($album[$x]));
if(file_exists(KATALOG_ZDJEC.$info.".txt")){
$plik=fopen(KATALOG_ZDJEC.$info.".txt","r");
$opis=fgets($plik);
fclose($plik);
echo "<br>$opis";
}
echo "</td>";
}
echo "</tr><table>";

/* Jesli mamy wiecej niz jedna strone wyswietlimy ich liste */
if ($stron>1){
echo "<br>";
echo "Strona: "; for($x=1;$x<=$stron;$x++) {

/* Bierzaca strone pogrubimy a pozostale beda linkami z odpowiednim adresem */
if ($pokaz_strone==$x){echo "<b> $x </b>";} else {echo "<a href=\"galeria.php?pokaz_strone=$x\"> $x </a>";}
}
}

?>
</td></tr></table>
</center>
</body>
</html>



Plik mini.php


/*
Ten plik jako wynik swojego dzialania bedzie generowal miniaturke
zdjecia przekazanego jako parametr wywolania skryptu
(np. https://www.szabloniki.com/mini.php?fotka=obrazek.jpg), dlatego tez
musimy poinformowac przegladarde aby traktowal go jak plik graficzny.
*/
header('Content-type: image/jpeg');

/* Definiujemy wymiary miniaturki */
define ('SZEROKOSC',100);
define ('WYSOKOSC',100);

/* Otwieramy orginalne zdjecie przekazane w adresie strony */
$orginal=imagecreatefromjpeg($_GET['fotka']);

/*
Pobieramy wymiary orginalnego zdjecia, sa one potrzebne dla
dla wygenerowania pomniejszonej wersji.
*/
list($org_szer,$org_wys)=getimagesize($_GET['fotka']);

/* Tworzymy nowy obraz o ustalonych wczesniej wymiarach miniaturki */
$minitaturka=imagecreatetruecolor(SZEROKOSC,WYSOKOSC);

/*
Przy pomocy tej funkcji tworzymy miniature pliki graficznego.
Jesli dysponujemy odpowiednio szybka maszyna, lepszy efekt uzyskamy
zamieniajac ja na:

imagecopyresampled($minitaturka,$orginal, 0, 0, 0, 0 ,SZEROKOSC,WYSOKOSC,$org_szer,$org_wys);

ktora oprocz zmniejszenia fizycznych rozmiarow, wygladza krawedzie oraz poprawia ostrosc.
*/
imagecopyresized($minitaturka,$orginal, 0, 0, 0 , 0 ,SZEROKOSC,WYSOKOSC,$org_szer,$org_wys);

/*
Gotowa miniature wysylamy do przegladarki. Ostatni parametr okresla jakosc
generowanego brazu (0-100%). Czym mniejsza wartosc tym gorsza jakosc
zato rozmiar pliku znacznie mniejszy
*/
imagejpeg($minitaturka,NULL,70);



Dziekuję za uwagę - wszelkie niejasności proponuje umieszczać w komentarzach :)

Dodane przez polak dnia March 06 2007 11:35:41 45350 Czytań ·

Drukuj