Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie plików z katalogu
Forum PHP.pl > Forum > PHP
MOniToR
Czy jest mozliwośc napisania skryptu np. jakiejśc galerii która by wyświetlaął pliki z danego katalogu? tzn. bez żadnej bazy danych itd. tylko po prostu aby mi wyswietłiła np. miniatury wszystkich plików które sie znajduja w danym katalogu?
Dawid Pytel
Tak, nawet można takie znaleźć np. na www.hotscripts.com lub po przeczytaniu kilku arytkułów odnośnie robienia miniaturek+zabawa z plikami można zrobić to samemu.
q
przegladanie katalogu pod kontem rozszerzen i wyswietlanie wszystkich grafik prosta sprawa, tylko z tego co zrozumialme z twojego postu to chcecz miniaturki robic w locie, a takie rozwiazanie nie jest zbyt dobre. najlepiej przy jakims tam dodawaniu tworzyc miniaturki do jakiegos katalogu i je wyswietlac, a to jest juz proste


[manual:6445f42e94]opendir[/manual:6445f42e94], [manual:6445f42e94]readdir[/manual:6445f42e94], [manual:6445f42e94]pathinfo[/manual:6445f42e94]

o tworzeniu miniaturek poczytaj w archiwum, bylo tego pelno
kszychu
Czasami przydaje się też dynamiczne generowanie miniaturek, np. gdy masz limit miejsca na serwerze. A robi się to bardzo prosto:
dwa pliki: wyswietlajacy miniaturki i generujacy miniaturki.
Pierwszy odczytuje zawartość katalogu z uwzględnieniem rozszerzeń olików graficznych (było o tym na forum więc sobie poszukaj) i tworzy odpowiednie <img src=drugi_plik.php?sciezka=obrazek.gif>, drugi, pozapodaniu mu ścieżki generuje z obrazka miniaturkę (też niedawno było).
[fisher]
Cytat
Czy jest mozliwośc napisania skryptu np. jakiejśc galerii która by wyświetlaął pliki z danego katalogu? tzn. bez żadnej bazy danych itd. tylko po prostu aby mi wyswietłiła np. miniatury wszystkich plików które sie znajduja w danym katalogu?

Jest taka moziliwosc

plik thumbnail.php
[php:1:8a9a76a9fa]<?php
header("Content-type: image/JPEG");
if( isset($_GET['img']) ) {
$th_w = $_GET['w'];
$th_h = $_GET['h'];
$img_src=imagecreatefromjpeg($_GET['img']);
$img_dst=imagecreatetruecolor($th_w,$th_h);
imagecopyresized( $img_dst, $img_src , 0, 0, 0, 0, $th_w, $th_h, imagesx($img_src), imagesy($img_src) );
ImageJpeg($img_dst);
ImageDestroy($dst_f);
}
?>[/php:1:8a9a76a9fa]

wywolanie thumbnail.php?img=plik.graficzny.jpg&w=800&h=600

dla plikow innych niz JPEG zmien Content-type na wlasciwy
matid
Można by zamiast imagecopyresized użyć imagecopyresampled. Ładniej to wygląda smile.gif
[fisher]
Cytat
Można by zamiast imagecopyresized użyć imagecopyresampled. Ładniej to wygląda :)

Moze, ale (requires GD 2.0.l or greater) nie probowalem, a kod powstal kila doobrych miesiecy temu
Nie mam czasu zeby teraz to sprawdzic, ale bede pamietal
MOniToR
hm chyba mnie tu nie zrozumiano, chodzi mi o to że np. odbyła się jakas impreza i mam z 150 fotek z niej, to czy jest jakis sposub abym nie musiał wpisywac pokolei kazdego pliku do bazy tylko np. podac katalog i mi automatycznie wyswietli wszystkie pliki graficzne w tym katalogu w postaci miniatur
[fisher]
Cytat
hm chyba mnie tu nie zrozumiano, chodzi mi o to że np. odbyła się jakas impreza i mam z 150 fotek z niej, to czy jest jakis sposub abym nie musiał wpisywac pokolei kazdego pliku do bazy tylko np. podac katalog i mi automatycznie wyswietli wszystkie pliki graficzne w tym katalogu w postaci miniatur


Pytasz bo mnie nie zrozumiales.
Pytanie bylo skierowane w strone wyswietlenia miniatury
Podalem Ci przyklad kodu ktory generuje miniature dla jednego pliku (thumbnail.php?img=plik.jpg&w=800&h=600)

Wiec musisz wygenerowac sobie tyle instancji <img src="thumbnail.php...." /> ile potrzebujesz, chociazby listujesz pliki *.jpg tak, a pozniej chyba wiadomo co robic

[php:1:4be77e7b48]<?php
foreach (glob(DIR."/*.jpg") as $filename)
$wszystkie_pliki[] = $filename;
?>[/php:1:4be77e7b48]
MOniToR
Pytanie było skierowane jak wyswietlić na stronie pliki graficzne z katalogu bez wpisywania każdego pliku pokoleji.
[fisher]
Cytat
Pytanie było skierowane jak wyswietlić na stronie pliki graficzne z katalogu bez wpisywania każdego pliku pokoleji.

Odpowiedz masz w moim poprzednim poscie
carramba
$patch = '../katalog/'
$headfilename = 'plik_'; // Jakikolwiek plik z nazwa 'plik_'

$handle = opendir($patch);
while (false !== ($files = readdir($handle))) {
if ($files != "." && $files != ".." && eregi($headfilename,$files) && eregi ('.jpg',$files)) {
$array[] = $files; // wpisujesz do tablicy
echo $files; // lub drukujesz nazwe
echo '<img src="'.$patch.$files'" width="10" height="10">'; // lub wyswietlasz
}
}

powinno dzialac ale pisalem w locie wiec nie daje za to glowy
Nitryt14
Nie łatwiej by było sprawdzac rozszeżenie pliku przez np:
[php:1:9307eb9e1a]<?php
.jpg$|.png$|.gif$
?>[/php:1:9307eb9e1a]

niz przez:
[php:1:9307eb9e1a]<?php
header("Content-type: image/JPEG");
?>[/php:1:9307eb9e1a]

Pozdrawiam

PS. carramba mógłbyś skrypt php wstawiać po nacisnieciu przycisku php napisanego czerwonymi literami bo cieżko sie czyta jak jest wstawiony w tresć postu
[fisher]
No dobra napisze

plik thumbnail.php
[php:1:9c0ef69c3a]<?php
header("Content-type: image/JPEG");
if( isset($_GET['img']) ) {
$th_w = $_GET['w'];
$th_h = $_GET['h'];
$img_src=imagecreatefromjpeg($_GET['img']);
$img_dst=imagecreatetruecolor($th_w,$th_h);
imagecopyresized( $img_dst, $img_src , 0, 0, 0, 0, $th_w, $th_h, imagesx($img_src),
imagesy($img_src) );
ImageJpeg($img_dst);
ImageDestroy($dst_f);
}
?>[/php:1:9c0ef69c3a]

plik galeria.php
[php:1:9c0ef69c3a]<?php
$szerokosc = 800;
$wysokosc = 600;

foreach (glob("foto/*.jpg") as $filename)
echo '<img src="thumbnail.php?img='.$filename.'&w='.$szerokosc.'&h='.$wysokosc.'" />';
?>[/php:1:9c0ef69c3a]

Pisane z reki, wiec moze byc nie odporne na ^c^v, ale zasada mniej wiecej taka

Rozumiem ze forum ma sluzyc pomoca dla newbies, ale niech to beda pracowici a nie leniwi newbies ktorzy nie potrafia poskladac wypowiedzi z kilku postow
[fisher]
Cytat
[php:1:65a56eb84e]<?php
echo '<img src="'.$patch.$files'" width="10" height="10">'; // lub wyswietlasz
?>[/php:1:65a56eb84e]

rozwiazanie malo efektywne, gdyz nie generuje miniatury, a jedynie wyswietla oryginalny plik w pomniejszeniu
carramba
si - oczywiscie ze malo efektywne ale to mial byc przyklad a nie gotowy kod w to miejsce przeciez mozesz sobie wstawic tworzenie miniatury
MOniToR
thx fisher , działa biggrin.gif
[fisher]
Cytat
si - oczywiscie ze malo efektywne ale to mial byc przyklad a nie gotowy kod w to miejsce przeciez mozesz sobie wstawic tworzenie miniatury

tymbardziej nie rozumiem Twojej wypowiedzi ;-))
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.