Foto's uit een map halen en weergeven
Is het mogelijk met een redelijk simpel php script om foto's uit een bepaalde map automatisch weer te geven op een pagina, en gelijk de java lightbox e.d. eraan te linken? Dus dat je alleen de foto's in een map zet je op website, en dat de webpagina de foto's uit die map haalt en ze gelijk weergeeft zonder dat je stuk voor stuk de foto's moet aanroepen.
Ik heb zo'n script thuis liggen, zal hem vanavond doorsturen
glob() kun je al je foto's uit een map halen. Je krijgt dan een array met daarin de locatie van je foto's. Van java heb ik helaas geen verstand.
met Zou harstikke mooi zijn!
@Mark
Het is niet bijzonder iets met java, er staat puur wat in de rel van de afbeelding
@Gerhard
ik d'r eens naar kijken :)
edit; ik heb via de link van Gerhard het voor elkaar gekregen dat ie de bestandsnamen ophaalt, ik weet echter niet hoe ik dit nu als afbeelding weer kan geven.. Ik zou ook graag de 1e 9 foto's op 1 pagina willen, de 9 daarop op een volgende pagina e.d., is dit te doen? Met PHP ben ik echt net begonnen, dus als iemand me hiermee zou kunnen helpen zou mooi zijn! :)
Gewijzigd op 05/04/2011 16:14:15 door Jacco van Koot
Dus als je hebt: laatzien.php?begin=9, begint hij bij 9. Je zorgt er dan via een loopje voor dat die ophoudt bij 9.
Toevoeging op 05/04/2011 16:46:18:
Ik heb 't nu met de glob() zo dat ie alle .png bestanden ophaalt en weergeeft, nu moet ik ze alleen nog in een <img src=$filename"> krijgen, maar dat lukt me nog niet..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
function showfiles($map = "./", $return = array()){
if(@$dir = opendir($map)){
while (false !== ($file = readdir($dir))){
if ($file != "." && $file != ".."){
$return[] = $map . $file;
}
}
}
@closedir($dir);
return $return;
}
// Functie aanroepen met de mapnaam en aan het eind een / (slash).
$dirinhoud = showfiles('media/fotos/');
for($j = 0; $j < count($dirinhoud);$j++) {
if(is_dir($dirinhoud[$j])){
$return2 = showfiles($dirinhoud[$j].'/');
for($i = 0; $i < count($dirinhoud);$i++){
echo '<b>'.$dirinhoud[$i].'</b><br/>';
for($i = 0; $i < count($return2);$i++){
echo '<img src="'.$return2[$i].'"/><br/>';
}
echo '<br/>';
}
}
}
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
function showfiles($map = "./", $return = array()){
if(@$dir = opendir($map)){
while (false !== ($file = readdir($dir))){
if ($file != "." && $file != ".."){
$return[] = $map . $file;
}
}
}
@closedir($dir);
return $return;
}
// Functie aanroepen met de mapnaam en aan het eind een / (slash).
$dirinhoud = showfiles('media/fotos/');
for($j = 0; $j < count($dirinhoud);$j++) {
if(is_dir($dirinhoud[$j])){
$return2 = showfiles($dirinhoud[$j].'/');
for($i = 0; $i < count($dirinhoud);$i++){
echo '<b>'.$dirinhoud[$i].'</b><br/>';
for($i = 0; $i < count($return2);$i++){
echo '<img src="'.$return2[$i].'"/><br/>';
}
echo '<br/>';
}
}
}
?>
Gewijzigd op 05/04/2011 16:49:32 door gerhard l
Om de gehele array door te lopen kun je gewoon foreach gebruiken. ik weet niet hoe je array met albeeldingen heet dus je moet $images even veranderen naar die van jouw.
Gewijzigd op 05/04/2011 16:55:26 door - Mark -
Ah ik heb 't nu voor elkaar dat ie foto's uit een map haalt en zo plaatst dat ik het wil, ook de lightbox zit er al aan vast. Nu nog verder met dat er maar 9 foto's per pagina komen..
Je weet waar $_GET['page'] vandaan komt of niet? Het gedeelte waar de foto's worden opgehaald moet je nog even zelf invullen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
# Het aantal resultaten per pagina.
$results_per_page = 9;
# Foto's ophalen.
$images = glob();
# Foto's verdelen over meerdere pagina's.
$pages = array_chunk($images, $results_per_page);
# De huidige pagina bepalen.
$current_page = (isset($_GET['page']) and array_key_exists($_GET['page'] - 1, $pages)) ? $_GET['page'] - 1 : 0 ;
# Foto's weergeven.
foreach($pages[$current_page] as $img){
echo '<img src="'.$img.'">';
}
# Het totaal aantal pagina's tellen.
$page_count = count($pages);
# Menu weergeven.
for($i = 1; $i <= $page_count; $i++){
# Link weergeven.
echo '<a href="?page='.$i.'">'.$i.'</a>';
# Divider weergeven als we nog niet op de laatste pagina zijn.
if($i < $page_count){
echo ' - ';
}
}
?>
# Het aantal resultaten per pagina.
$results_per_page = 9;
# Foto's ophalen.
$images = glob();
# Foto's verdelen over meerdere pagina's.
$pages = array_chunk($images, $results_per_page);
# De huidige pagina bepalen.
$current_page = (isset($_GET['page']) and array_key_exists($_GET['page'] - 1, $pages)) ? $_GET['page'] - 1 : 0 ;
# Foto's weergeven.
foreach($pages[$current_page] as $img){
echo '<img src="'.$img.'">';
}
# Het totaal aantal pagina's tellen.
$page_count = count($pages);
# Menu weergeven.
for($i = 1; $i <= $page_count; $i++){
# Link weergeven.
echo '<a href="?page='.$i.'">'.$i.'</a>';
# Divider weergeven als we nog niet op de laatste pagina zijn.
if($i < $page_count){
echo ' - ';
}
}
?>
EDIT: Menu toegevoegd om het wat duidelijker te maken.
EDIT 2: Paar foutjes eruit gehaald en snel even getest.
Gewijzigd op 05/04/2011 18:53:15 door - Mark -
Mijn script komt overeen met wat gerhard heeft gepost.
Echter zit ik nog met 1 probleempje, de foto's worden redelijk groot, en ik heb ze op de pagina kleiner staan zodat het overzichtelijk blijft. Ik heb nu alleen dat de foto's op de pagina 20% zijn van de ware grootte, is er een manier om met glob() jpg bestanden, en met een glob() .png bestanden uit diezelfde map te halen om de jpg bestanden op de site weer te geven, en de png bestanden als foto op ware grootte?
Je krijgt dan toch gewoon
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
foreach($pages[$current_page] as $img){
echo '<a href="'.str_replace('.png', '.jpg', $img).'"><img src="'.$img.'"></a>';
}
?>
foreach($pages[$current_page] as $img){
echo '<a href="'.str_replace('.png', '.jpg', $img).'"><img src="'.$img.'"></a>';
}
?>
Hm voor mij is dat niet zo 'gewoon' :p maar ik bedenk me nu, is het niet mogelijk om alleen de bestandsnaam, en niet de extensie op te vragen? dan kun je in de <a href> en <img> de extensie erachter plakken.
edit:
Ik heb nu dit:
Code (php)
maar die werkt niet, waar moet ik die str_replace ergens plaatsen? :) de <a href> is voor de lightbox, deze moet gewoon groot zijn en .jpg, de <img> moet klein worden en dus .png.
Gewijzigd op 07/04/2011 12:24:08 door Jacco van Koot
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
foreach (glob("100411/*.jpg") as $filename ) {
echo '<a href="'.$filename.'" rel="lightbox[1]"><img src="'.str_replace('.jpg', '.png', $filename).'" class="image"></a>';
}
?>
foreach (glob("100411/*.jpg") as $filename ) {
echo '<a href="'.$filename.'" rel="lightbox[1]"><img src="'.str_replace('.jpg', '.png', $filename).'" class="image"></a>';
}
?>
Gewijzigd op 07/04/2011 12:30:36 door - Mark -
Haha oké, met de quotes weet (wist) ik nooit goed wat te doen, maar nu dus wel. En het werkt ook nog, bedankt man!
Graag gedaan.