Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Skrypt/php] Galeria
Forum PHP.pl > Forum > Przedszkole
Forgoot
Witam!
Chciałbym stworzyć skrypt galerii (dla jpg, gif, png, jpeg). Chciałbym aby obrazki, np: z katalogu images wyświetlać w rozmiarach 100x100 (dopiero po kliknięciu na "miniaturkę" zdjęcie otwierałoby się w "realnym" rozmiarze).
Proszę powiedzieć mi jakich funkcji należy użyć. Potem postaram się zaprezentować swoje wypociny. laugh.gif
Vogel
http://pl2.php.net/manual/pl/ref.image.php
BonZo
Powiedzcie jakie funkcje nalezy pokolei wykonac.... lub omowcie troche sad.gif
bronx
odpalasz skrypt tak:

<img src="miniaturka.php">

miniaturka.php:
  1. <?php
  2. $sciezka = "galeria/obrazek.jpg";
  3. list($szerokosc, $wysokosc, $type, $attr) = getimagesize($sciezka); // pobranie atrybutow obrazka
  4. $nowa_wysokosc = 120; // wysokosc miniaturki
  5. $nowa_szerokosc = ceil(($nowa_wysokosc*$szerokosc)/$wysokosc);
  6. $duzy = imagecreatefromjpeg("$sciezka");
  7. $nowy = imagecreatetruecolor($nowa_szerokosc, $nowa_wysokosc);
  8. imagecopyresampled($nowy, $duzy, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc);
  9.  
  10. header("Content-type: image/jpeg");
  11. header("Content-disposition: filename=\"obrazek.jpg\"");
  12.  
  13. imagejpeg($nowy,"", 80); // 80 to jakosc miniaturki (od 0-100)
  14. ImageDestroy($duzy);
  15. ImageDestroy($nowy);
  16. ?>


ten skrypt tworzy miniaturki w wysokości 120 a szerokość oblicza automatycznie.
BonZo
a jak dodac aby typy plikow w podanym przez Ciebie katalogu nie byly tylko jpg? co trzeba dodac?
Vogel
a wiec.

1. formularz na stronie. nim przesylasz pliki na serwer. pamnietamy o enctype="multipart/form-dat" w <from> i jedziemy dalej
2. przy pomocy getimagesize sprawdzamy typ pliku jelsi jest graifka - idziemy dalej, jelsi nie - wywalamy blad
3. przy uzyciu imagecreatetruecolor() tworzymy kanwe miniaturki, imagecopyresampled() sluzy do skalowania, zapisujemy na serwerze przy pomocy ktoregos z imagejpg/imagepng/itp.itd.etc.
4. na koniec przenosimy nasz tymczasowy ulpoadowany plik oryginalnych romziarow do odpowiedniego katalogu ( move_uploaded_file() )
bronx
proponowałbym jednak korzystać z mojego sposobu (troche będziesz musiał przerobić tylko skrypt). A to dlatego, że on tworzy miniaturkę w locie, a co za tym idzie nie musisz zaśmiecać serwera dwoma plikami (i dużym i miniaturką). Po drugie zawsze lepiej w locie, ponieważ jeżeli potem będziesz chciał mieć miniatruki w innych rozmiarach to wystarczy że zmienisz w skrypcie jedną liczbę i tak będzie, a jak zapiszesz już w określonych wielkościach to potem będzie probem i będziesz musiał je wgrywać jeszcze raz
BonZo
@Vogel, dzieki smile.gif @bronx powiedz tylko jak zrobic aby po kliknieciu "miniaturki"
BonZo
@Vogel, dzieki smile.gif @bronx powiedz tylko jak zrobic aby po kliknieciu "miniaturki" obrazek wyswietlal sie w nowym okniew rzeczyswistych wymiarach?
bronx
najpierw za pomocą getimagesize(); pobierasz wysokośc i szerokość dużej fotki (żebyś wiedział o jakiej szerokości i wysokości okno ma się otworzyć). a jak je tworzyć masz tutaj:

http://www.kurshtml.boo.pl/skrypty/okno.html#generator_okien

jakbyś dalej miał problemy to pisz smile.gif
luinnar
Cytat(bronx @ 2006-04-05 12:04:03)
proponowałbym jednak korzystać z mojego sposobu (troche będziesz musiał przerobić tylko skrypt). A to dlatego, że on tworzy miniaturkę w locie, a co za tym idzie nie musisz zaśmiecać serwera dwoma plikami (i dużym i miniaturką)

To jedna z większych głupot jakie kiedykolwiek czytałem. Proponuję pomiar czasu wykonywania się skryptu przy powiedzmy 20 miniaturkach robionych w locie.

Miniaturyzacja zdjęć to operacja czaso- i pamięciochłonna. Należy umieszczać miniaturki na serwerze ponieważ są nie zajmują dużo miejsca a ich generacja nie obciąża serwera (1 raz pomniejszasz i masz spokój).
bronx
Cytat(luinnar @ 2006-04-05 16:14:25)
Cytat(bronx @ 2006-04-05 12:04:03)
proponowałbym jednak korzystać z mojego sposobu (troche będziesz musiał przerobić tylko skrypt). A to dlatego, że on tworzy miniaturkę w locie, a co za tym idzie nie musisz zaśmiecać serwera dwoma plikami (i dużym i miniaturką)

To jedna z większych głupot jakie kiedykolwiek czytałem. Proponuję pomiar czasu wykonywania się skryptu przy powiedzmy 20 miniaturkach robionych w locie.

Miniaturyzacja zdjęć to operacja czaso- i pamięciochłonna. Należy umieszczać miniaturki na serwerze ponieważ są nie zajmują dużo miejsca a ich generacja nie obciąża serwera (1 raz pomniejszasz i masz spokój).

owszem - zgadzam się z Tobą ale przy serwisach które nie mają jakichś rekordowych odwiedzin nie ma to wielkiego wpływu. A ptrzeczytaj drugą część postu. Co jeżeli nagle z miniaturek które mają wielkość 60x60 będziesz chciał miniaturki 150x150 ? będziesz je musiał jeszcez raz wgrywać i dobrze oi tym wiesz, a tak wystarczy tylko zmienić w skrypcie i takie masz
luinnar
Cytat
owszem - zgadzam się z Tobą ale przy serwisach które nie mają jakichś rekordowych odwiedzin nie ma to wielkiego  wpływu. A ptrzeczytaj drugą część postu. Co jeżeli nagle z miniaturek które mają wielkość 60x60 będziesz chciał miniaturki 150x150 ? będziesz je musiał jeszcez raz wgrywać i dobrze oi tym wiesz, a tak wystarczy tylko zmienić w skrypcie i takie masz
To robisz skrypt generujący wszystkie jeszcze raz i tak robisz kilkadziesiąt operacji mniej. Optymalizacja to podstawa, a uczenie początkujących złych nawyków to głupota. Tak sądzę ja.
bronx
Cytat(luinnar @ 2006-04-05 21:17:40)
Cytat
owszem - zgadzam się z Tobą ale przy serwisach które nie mają jakichś rekordowych odwiedzin nie ma to wielkiego  wpływu. A ptrzeczytaj drugą część postu. Co jeżeli nagle z miniaturek które mają wielkość 60x60 będziesz chciał miniaturki 150x150 ? będziesz je musiał jeszcez raz wgrywać i dobrze oi tym wiesz, a tak wystarczy tylko zmienić w skrypcie i takie masz
To robisz skrypt generujący wszystkie jeszcze raz i tak robisz kilkadziesiąt operacji mniej. Optymalizacja to podstawa, a uczenie początkujących złych nawyków to głupota. Tak sądzę ja.

głupotą jest pisanie skryptów, które nadają się tylko do jednego zastosowania - tak sądze ja. Dla mnie podstawą jest elastyczność - że można coś szybko zmienić i dopasować do wszystkich stron a nie na twardo pisanie skryptu, a jak chce się coś zmienić to pisanie nowych które poprawiają stare (już nie pasujące) "procedury". Oczywiście każdy ma swoje zdanie smile.gif

a tak troche odbijając od miniaturek - co jeżeli chcesz nakładać swoje loga na grafiki ? też uważasz że lepiej jest to robić przy uploadzie ? co jeżeli nagle zmienisz logo ? połowa fotek z jednym, połowa ze starym ? nie lepiej w locie je nakąłdać ? i masz problem z głowy bo zawsze wiesz że będziesz miał aktualne smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.