Automatisch Fotoalbum V3
Door Arjan Kapteijn, 19 jaar geleden, 36.497x bekeken
Dus je wilt je fotoverzameling delen met de wereld maar je hebt geen zin in het gebruik van onhandige programma's? Laat PHP het werk voor je doen! Gooi dit bestand ergens neer en maak in dezelfde directory een map fotoalbum. Gooi in die map al je fotos en de rest gaat automatisch. Zodra iemand een foto bekijkt die nog niet gethumbnailed is word dat op dat moment gedaan.
* Iets logischer code
* Moet ook op linux servers geen problemen meer geven
* Fotonaam in de URL
* Geeft wat meer mogelijkheden (volgende/vorige foto ipv een knop)
Voorbeeld: http://i-cey.net/?pagina=fotoalbum
Gesponsorde koppelingen
PHP script bestanden
Er zijn 71 reacties op 'Automatisch fotoalbum v3'
Gesponsorde koppelingen
Heej Arjen,
Bedankt voor het alsnog delen van je aangepaste script, ik ga hem zeker testen op de extra functionaliteit!
Grz. Johan.
// Edit: ik krijg de volgende error:
Dit doet zich voor na het openen van de eerste afbeelding uit de gallerij (de eerste grote thumb zogezegd, de link naar deze pagina is "?pagina=fotoalbum&album=fotoalbum&afbeelding=..."). De afbeeldingen staan direct in de map /fotoalbum/.
Echter is dit alleen lokaal op Windows, op mijn Linux-server wordt deze foutmelding niet weergegeven.
Wanneer het script geen thumbernails kan aanmaken zal er op dit moment niets worden weergegeven. Bij de aanpassingen die ik in je vorige versie heb gedaan laat ik, wanneer er geen thumb-map kan worden gemaakt, een error weergeven: "Er kon geen thumbernail-map aangemaakt worden. Heeft uw geuploadde foto-map voldoende CHMOD-rechten?" (o.i.d. uiteraard). Dit is misschien voor de gebruiksvriendelijkheid wel zo prettig denk ik.
Bedankt voor het alsnog delen van je aangepaste script, ik ga hem zeker testen op de extra functionaliteit!
Grz. Johan.
// Edit: ik krijg de volgende error:
Code (php)
1
Notice: Undefined offset: -1 in C:\Program Files\UsbWebserver\Root\album\index.php on line 132
Dit doet zich voor na het openen van de eerste afbeelding uit de gallerij (de eerste grote thumb zogezegd, de link naar deze pagina is "?pagina=fotoalbum&album=fotoalbum&afbeelding=..."). De afbeeldingen staan direct in de map /fotoalbum/.
Echter is dit alleen lokaal op Windows, op mijn Linux-server wordt deze foutmelding niet weergegeven.
Wanneer het script geen thumbernails kan aanmaken zal er op dit moment niets worden weergegeven. Bij de aanpassingen die ik in je vorige versie heb gedaan laat ik, wanneer er geen thumb-map kan worden gemaakt, een error weergeven: "Er kon geen thumbernail-map aangemaakt worden. Heeft uw geuploadde foto-map voldoende CHMOD-rechten?" (o.i.d. uiteraard). Dit is misschien voor de gebruiksvriendelijkheid wel zo prettig denk ik.
Thanks, ik heb een nieuwe versie erop gezet. Als het goed is moet die error nu opgelost zijn, het was een logische fout, je kunt immers van de eerste afbeelding (0) niet -1 doen ;).
Met betrekking tot je 2e opmerking, je hebt gelijk... en in eerste instantie had ik ook een wat uitgebreidere versie wat wat meer if/elsjes om alles te controleren (schrijfrechten, PHPGD aanwezig, etc etc). Maar op een gegeven moment had ik er teveel tijd in zitten, dat was het mij niet waard, zeker niet gezien de reacties op mijn vorige script.
p.s. Johan, zou je even kunnen testen of je nu wel de thumbnails (van je linuxserver) kunt verwijderen.
Met betrekking tot je 2e opmerking, je hebt gelijk... en in eerste instantie had ik ook een wat uitgebreidere versie wat wat meer if/elsjes om alles te controleren (schrijfrechten, PHPGD aanwezig, etc etc). Maar op een gegeven moment had ik er teveel tijd in zitten, dat was het mij niet waard, zeker niet gezien de reacties op mijn vorige script.
p.s. Johan, zou je even kunnen testen of je nu wel de thumbnails (van je linuxserver) kunt verwijderen.
Misschien nog even een file_exists toevoegen om dit te voorkomen: http://i-cey.net/?pagina=fotoalbum&album=fotoalbum/amerika/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/boe/
Ziet er verder weer goed uit :-)
Ziet er verder weer goed uit :-)
Dan zou ik eerder die host schoppen, ouder dan PHP 5.1 kun je je klanten gewoon niet aandoen.
Zie ook http://wiki.phpfreakz.nl/Empty
Zie ook http://wiki.phpfreakz.nl/Empty
Heb je vorige script ook gebruikt en daaraan toegevoegd dat als je op een foto klikt en de "grote" versie te zien krijgt je ook een knop "overzicht" hebt.
Dan kom je automatisch op juiste de pagina met de kleinste thumbs...
(Dus bv pagina 3 van 6)
Misschien een idee voor dit script?
Verder netjes gedaan!
Dan kom je automatisch op juiste de pagina met de kleinste thumbs...
(Dus bv pagina 3 van 6)
Misschien een idee voor dit script?
Verder netjes gedaan!
hallo arjan, ja dat het niet ondersteund werd dat had ik inderdaad al gezien, ik had al geprobeerd om het er zelf bij te stoppen, dit zal ik dan maar niet doen, bmp is vaak ook erg groot he.
weet je wat het probleem is, ik wil het script op een website gebruiken voor onze duikclub om de fotos van de duikers te delen met de rest van de club, en ik weet niet welk format de duikers hebben. ik zal wel zeggen dat bmp niet mag in verband met het formaat.... gna gna.
dank je wel voor het verder prachtige script.
peter
weet je wat het probleem is, ik wil het script op een website gebruiken voor onze duikclub om de fotos van de duikers te delen met de rest van de club, en ik weet niet welk format de duikers hebben. ik zal wel zeggen dat bmp niet mag in verband met het formaat.... gna gna.
dank je wel voor het verder prachtige script.
peter
Code (php)
1
2
3
2
3
<?php
if($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png')
?>
if($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png')
?>
Die code zorgt er als het goed is al voor dat alleen jpg, gif en png bestanden geaccepteerd worden. Blijkbaar heb jij een BMP waarvan de mime-type niet goed doorkomt ofzo..
Ik wilde dit script gebruiken op een site met mod-rewrite. Hierbij dus een nieuwe, mod-rewrite geschikte versie:
Met dit in je .htaccess bestand:
Waarbij je "url" vervangt door je base_url. Je kunt het foto-album vervolgens aanroepen door www.jesite.nl/je/base/url.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
<?php
$startmap = 'fotoalbum';
$base_url = '/4/fotoalbum/';
$afbeeldingen = array();
$hoogte_klein = 112;
$breedte_klein = 150;
$hoogte_groot = 300;
$breedte_groot = 500;
$perpagina = 12;
$map = array();
$instellingen = array();
//functie, voor het maken van een afbeelding.
function thumbnail($afbeelding, $type)
{
$map = $afbeelding['dirname'];
$bestandsnaam = $afbeelding['basename'];
list($type, $hoogte, $breedte) = $type;
list($breedte_origineel, $hoogte_origineel, $extensie) = getimagesize($map.'/'.$bestandsnaam);
if(!is_dir($map.'/thumbs/'))
{
mkdir($map.'/thumbs/', 0777);
chmod($map.'/thumbs/', 0777);
}
if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte))
{
$breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
}else{
$hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
}
$afbeelding = imagecreatetruecolor($breedte, $hoogte);
switch($extensie)
{
case 1:
//gif
$afbeelding_origineel = imagecreatefromgif($map.'/'.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagegif($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam);
break;
case 2:
//jpg
$afbeelding_origineel = imagecreatefromjpeg($map.'/'.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagejpeg($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam, 80);
break;
case 3:
//png
$afbeelding_origineel = imagecreatefrompng($map.'/'.$bestandsnaam);
$background = imagecolorallocate($afbeelding, 0, 0, 0);
imagecolortransparent($afbeelding, $background); // make the new temp image all transparent
imagealphablending($afbeelding, false); // turn off the alpha blending to keep the alpha channel
imagesavealpha($afbeelding, true);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagepng($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam);
break;
}
chmod($map.'/thumbs/'.$type.'_'.$bestandsnaam, 0777);
return TRUE;
}
$rest = isset($_GET['rest']) ? $_GET['rest'] : '';
foreach(explode('/',$rest) as $deel)
{
if(strstr($deel, '='))
{
$subdeel = explode('=', $deel);
$instellingen[$subdeel[0]] = $subdeel[1];
}
elseif(strstr($deel, '.'))
{
$afbeelding = $deel;
}
elseif(!empty($deel))
{
$map[] = $deel;
}
}
echo '<div id="breadcrumbs">>> <a href="'.$base_url.'">'.$startmap.'</a>';
foreach($map as $link)
{
echo ' >> <a href="'.$base_url.''.$link.'">'.$link.'</a>';
}
echo '<hr /></div>';
$map = implode('/',$map);
$paginanr = (isset($instellingen['paginanr']) && !empty($instellingen['paginanr']) && ctype_digit($instellingen['paginanr'])) ? $instellingen['paginanr'] : 1;
$afbeelding = (!empty($afbeelding)) ? $afbeelding : null;
if(!$bestanden = glob($startmap.'/'.$map.'/*.*'))
{
$bestanden = array();
}
foreach($bestanden as $bestand)
{
$gegevens = getimagesize($bestand);
$extensie = $gegevens['mime'];
if($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png')
{
$afbeeldingen[] = $bestand;
}
}
$aantalfotos = count($afbeeldingen);
if(isset($afbeelding))
{
foreach($afbeeldingen as $id => $naam)
{
if(basename($naam) == $afbeelding)
{
$fotonr = $id;
}
}
if(isset($fotonr))
{
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if($fotonr > 0)
{
$vorige_afbeelding = pathinfo($afbeeldingen[$fotonr-1]);
echo '<a href="'.$base_url.''.$map.'/'.$vorige_afbeelding['basename'].'" title="Ga naar foto '.$vorige_afbeelding['basename'].'"><< Vorige</a>';
}else{
echo '<< Vorige';
}
echo ' Foto '.($fotonr +1).' van '.$aantalfotos.' ';
if($fotonr < $aantalfotos -1)
{
$volgende_afbeelding = pathinfo($afbeeldingen[$fotonr+1]);
echo '<a href="'.$base_url.''.$map.'/'.$volgende_afbeelding['basename'].'" title="Ga naar foto '.$volgende_afbeelding['basename'].'">Volgende >></a><br>';
}else{
echo 'Volgende >><br>'.PHP_EOL;
}
if(!file_exists($afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename']))
{
if(thumbnail($afbeelding, array('groot', $hoogte_groot, $breedte_groot)))
{
echo '<a href="/'.$afbeelding['dirname'].'/'.$afbeelding['basename'].'" target="_BLANK"><img src="/'.$afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}else{
echo '<a href="/'.$afbeelding['dirname'].'/'.$afbeelding['basename'].'" target="_BLANK"><img src="/'.$afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}else{
echo '<p>Sorry, deze foto bestaat niet!</p>';
}
}else{
if(!$mappen = glob($startmap.'/'.$map.'/*', GLOB_ONLYDIR))
{
$mappen = array();
}
foreach($mappen as $album)
{
if(basename($album) != 'thumbs')
{
echo '<a href="'.$base_url.basename($album).'">'.ucfirst(basename($album)).'</a><br>'.PHP_EOL;
}
}
if($aantalfotos > $perpagina)
{
if ($paginanr > 1)
{
echo '<a href="'.$base_url.''.$map.'/paginanr='.($paginanr - 1).'" title="Ga naar pagina '.($paginanr - 1).'"><< Vorige</a>';
}else{
echo '<< Vorige';
}
echo ' Pagina '.$paginanr.' van '.ceil($aantalfotos/$perpagina).' ';
if ($paginanr < ceil(($aantalfotos)/$perpagina))
{
echo '<a href="'.$base_url.''.$map.'/paginanr='.($paginanr + 1).'" title="Ga naar pagina '.($paginanr + 1).'">Volgende >></a><br>';
}else{
echo 'Volgende >><br>'.PHP_EOL;
}
}
for($fotonr = (($paginanr -1) * $perpagina); $fotonr <= ((($paginanr -1) * $perpagina) + ($perpagina - 1)) && $fotonr < count($bestanden); $fotonr += 1)
{
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if(!file_exists($afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename']))
{
if(thumbnail($afbeelding, array('klein', $hoogte_klein, $breedte_klein)))
{
echo '<a href="'.$base_url.''.$map.'/'.$afbeelding['basename'].'"><img src="/'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}else{
echo '<a href="'.$base_url.''.$map.'/'.$afbeelding['basename'].'"><img src="/'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}
}
?>
$startmap = 'fotoalbum';
$base_url = '/4/fotoalbum/';
$afbeeldingen = array();
$hoogte_klein = 112;
$breedte_klein = 150;
$hoogte_groot = 300;
$breedte_groot = 500;
$perpagina = 12;
$map = array();
$instellingen = array();
//functie, voor het maken van een afbeelding.
function thumbnail($afbeelding, $type)
{
$map = $afbeelding['dirname'];
$bestandsnaam = $afbeelding['basename'];
list($type, $hoogte, $breedte) = $type;
list($breedte_origineel, $hoogte_origineel, $extensie) = getimagesize($map.'/'.$bestandsnaam);
if(!is_dir($map.'/thumbs/'))
{
mkdir($map.'/thumbs/', 0777);
chmod($map.'/thumbs/', 0777);
}
if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte))
{
$breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
}else{
$hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
}
$afbeelding = imagecreatetruecolor($breedte, $hoogte);
switch($extensie)
{
case 1:
//gif
$afbeelding_origineel = imagecreatefromgif($map.'/'.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagegif($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam);
break;
case 2:
//jpg
$afbeelding_origineel = imagecreatefromjpeg($map.'/'.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagejpeg($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam, 80);
break;
case 3:
//png
$afbeelding_origineel = imagecreatefrompng($map.'/'.$bestandsnaam);
$background = imagecolorallocate($afbeelding, 0, 0, 0);
imagecolortransparent($afbeelding, $background); // make the new temp image all transparent
imagealphablending($afbeelding, false); // turn off the alpha blending to keep the alpha channel
imagesavealpha($afbeelding, true);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagepng($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam);
break;
}
chmod($map.'/thumbs/'.$type.'_'.$bestandsnaam, 0777);
return TRUE;
}
$rest = isset($_GET['rest']) ? $_GET['rest'] : '';
foreach(explode('/',$rest) as $deel)
{
if(strstr($deel, '='))
{
$subdeel = explode('=', $deel);
$instellingen[$subdeel[0]] = $subdeel[1];
}
elseif(strstr($deel, '.'))
{
$afbeelding = $deel;
}
elseif(!empty($deel))
{
$map[] = $deel;
}
}
echo '<div id="breadcrumbs">>> <a href="'.$base_url.'">'.$startmap.'</a>';
foreach($map as $link)
{
echo ' >> <a href="'.$base_url.''.$link.'">'.$link.'</a>';
}
echo '<hr /></div>';
$map = implode('/',$map);
$paginanr = (isset($instellingen['paginanr']) && !empty($instellingen['paginanr']) && ctype_digit($instellingen['paginanr'])) ? $instellingen['paginanr'] : 1;
$afbeelding = (!empty($afbeelding)) ? $afbeelding : null;
if(!$bestanden = glob($startmap.'/'.$map.'/*.*'))
{
$bestanden = array();
}
foreach($bestanden as $bestand)
{
$gegevens = getimagesize($bestand);
$extensie = $gegevens['mime'];
if($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png')
{
$afbeeldingen[] = $bestand;
}
}
$aantalfotos = count($afbeeldingen);
if(isset($afbeelding))
{
foreach($afbeeldingen as $id => $naam)
{
if(basename($naam) == $afbeelding)
{
$fotonr = $id;
}
}
if(isset($fotonr))
{
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if($fotonr > 0)
{
$vorige_afbeelding = pathinfo($afbeeldingen[$fotonr-1]);
echo '<a href="'.$base_url.''.$map.'/'.$vorige_afbeelding['basename'].'" title="Ga naar foto '.$vorige_afbeelding['basename'].'"><< Vorige</a>';
}else{
echo '<< Vorige';
}
echo ' Foto '.($fotonr +1).' van '.$aantalfotos.' ';
if($fotonr < $aantalfotos -1)
{
$volgende_afbeelding = pathinfo($afbeeldingen[$fotonr+1]);
echo '<a href="'.$base_url.''.$map.'/'.$volgende_afbeelding['basename'].'" title="Ga naar foto '.$volgende_afbeelding['basename'].'">Volgende >></a><br>';
}else{
echo 'Volgende >><br>'.PHP_EOL;
}
if(!file_exists($afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename']))
{
if(thumbnail($afbeelding, array('groot', $hoogte_groot, $breedte_groot)))
{
echo '<a href="/'.$afbeelding['dirname'].'/'.$afbeelding['basename'].'" target="_BLANK"><img src="/'.$afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}else{
echo '<a href="/'.$afbeelding['dirname'].'/'.$afbeelding['basename'].'" target="_BLANK"><img src="/'.$afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}else{
echo '<p>Sorry, deze foto bestaat niet!</p>';
}
}else{
if(!$mappen = glob($startmap.'/'.$map.'/*', GLOB_ONLYDIR))
{
$mappen = array();
}
foreach($mappen as $album)
{
if(basename($album) != 'thumbs')
{
echo '<a href="'.$base_url.basename($album).'">'.ucfirst(basename($album)).'</a><br>'.PHP_EOL;
}
}
if($aantalfotos > $perpagina)
{
if ($paginanr > 1)
{
echo '<a href="'.$base_url.''.$map.'/paginanr='.($paginanr - 1).'" title="Ga naar pagina '.($paginanr - 1).'"><< Vorige</a>';
}else{
echo '<< Vorige';
}
echo ' Pagina '.$paginanr.' van '.ceil($aantalfotos/$perpagina).' ';
if ($paginanr < ceil(($aantalfotos)/$perpagina))
{
echo '<a href="'.$base_url.''.$map.'/paginanr='.($paginanr + 1).'" title="Ga naar pagina '.($paginanr + 1).'">Volgende >></a><br>';
}else{
echo 'Volgende >><br>'.PHP_EOL;
}
}
for($fotonr = (($paginanr -1) * $perpagina); $fotonr <= ((($paginanr -1) * $perpagina) + ($perpagina - 1)) && $fotonr < count($bestanden); $fotonr += 1)
{
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if(!file_exists($afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename']))
{
if(thumbnail($afbeelding, array('klein', $hoogte_klein, $breedte_klein)))
{
echo '<a href="'.$base_url.''.$map.'/'.$afbeelding['basename'].'"><img src="/'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}else{
echo '<a href="'.$base_url.''.$map.'/'.$afbeelding['basename'].'"><img src="/'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}
}
?>
Met dit in je .htaccess bestand:
Code (php)
1
2
3
4
5
2
3
4
5
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^url\/(.*)\/?$ /index.php?id=4&rest=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^url\/(.*)\/?$ /index.php?id=4&rest=$1 [NC,L]
Waarbij je "url" vervangt door je base_url. Je kunt het foto-album vervolgens aanroepen door www.jesite.nl/je/base/url.
Ergens doe ik iets fout: http://www.stanne.nl/fotoalbum.php?pagina=fotoalbum&album=fotoalbum/auto
Kan iemand deze waarschijnlijk stomme fout aangeven, dan voel ik me even dombo, maar is het probleem op gelost.
Kan iemand deze waarschijnlijk stomme fout aangeven, dan voel ik me even dombo, maar is het probleem op gelost.
Wie kan mij helpen.. ik krijg 2 verschillende foutmeldingen..
Localhost deze fout:
Fatal error: Call to undefined function imagecreatetruecolor() in C:\Programblablabla
Online deze fout:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 14016 bytes) in /customers/blablabla
Localhost deze fout:
Fatal error: Call to undefined function imagecreatetruecolor() in C:\Programblablabla
Online deze fout:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 14016 bytes) in /customers/blablabla
Misschien
Ik bedoel: de foto heet Triumph Spitfire 1500 uit 1979.jpg (mijn eigen auto)
an wil ik ook graag die naam zichtbaar hebben bij die foto.
De volgende foto heet T-Ford 1938.jpg
en dan bij die foto die tekst. enz
Ik ben bezig met een website voor oldtimers.
Het watermerk wordt eventueel later toegevoegd en dat komt dan
bij elke foto te staan. In mijn geval Oude Voertuigendag Wijchen.
Als je begrijpt wat ik bedoel.
Piet
Ik bedoel: de foto heet Triumph Spitfire 1500 uit 1979.jpg (mijn eigen auto)
an wil ik ook graag die naam zichtbaar hebben bij die foto.
De volgende foto heet T-Ford 1938.jpg
en dan bij die foto die tekst. enz
Ik ben bezig met een website voor oldtimers.
Het watermerk wordt eventueel later toegevoegd en dat komt dan
bij elke foto te staan. In mijn geval Oude Voertuigendag Wijchen.
Als je begrijpt wat ik bedoel.
Piet
ik heb uw script goed geinstalleerd en heb er zelf een lightbox add op geplaatst, nu mijn vraag is of er een mogelijkheid is dat je de foto's die in 1 album geplaatst worden kan laten rangschikken op tijd van toevoeging?
bvb:
je upload 12 foto's, de 13de foto komt terug waar foto 1 staat en foto 12 komt op pagina 2.
een soort van doorschuif systeem. want momenteel gaat dat enkel op naam.
bedankt voor de hulp alleszins!
bvb:
je upload 12 foto's, de 13de foto komt terug waar foto 1 staat en foto 12 komt op pagina 2.
een soort van doorschuif systeem. want momenteel gaat dat enkel op naam.
bedankt voor de hulp alleszins!
Hallo Arjan,
Ik heb je script gedownload maar het werkt niet, ik krijg de volgende melding:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 13824 bytes) in D:\Programma's\xampp\htdocs\nick\foto\index.php on line 71
Enig idee hoe ik dit kan oplossen?
Alvast bedankt.
Nick
Ik heb je script gedownload maar het werkt niet, ik krijg de volgende melding:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 13824 bytes) in D:\Programma's\xampp\htdocs\nick\foto\index.php on line 71
Enig idee hoe ik dit kan oplossen?
Alvast bedankt.
Nick
Je kunt bovenaan het script dit toevoegen:
misschien niet de beste oplossing, maar het werkt wel
dit zorgt ervoor dat er genoeg geheugen beschikbaar word gesteld voor het aanmaken van thumbs etc.
Code (php)
1
2
3
4
2
3
4
<?php
//wijzig de 64 naar hogere waarden als de melding terug komt
ini_set("memory_limit","64M");
?>
//wijzig de 64 naar hogere waarden als de melding terug komt
ini_set("memory_limit","64M");
?>
misschien niet de beste oplossing, maar het werkt wel
dit zorgt ervoor dat er genoeg geheugen beschikbaar word gesteld voor het aanmaken van thumbs etc.
werkt goed het eerste script
alleen een foutmelding read error op lijn 108
nu ben ik niet erg goed in php en wil wel weten wat er fout is
weet iemand wat er fout is
hierbij ook meteen even de lijn 108
106. foreach($bestanden as $bestand)
107. {
108. $gegevens = getimagesize($bestand);
109. $extensie = $gegevens['mime'];
Arjan
alleen een foutmelding read error op lijn 108
nu ben ik niet erg goed in php en wil wel weten wat er fout is
weet iemand wat er fout is
hierbij ook meteen even de lijn 108
106. foreach($bestanden as $bestand)
107. {
108. $gegevens = getimagesize($bestand);
109. $extensie = $gegevens['mime'];
Arjan
Kan iemand me helpen ik krijg deze error:
Warning: Division by zero in /mnt/web7/33/20/51897320/htdocs/fotoalbum.php on line 129
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /mnt/web7/33/20/51897320/htdocs/fotoalbum.php on line 132
Warning: Division by zero in /mnt/web7/33/20/51897320/htdocs/fotoalbum.php on line 129
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /mnt/web7/33/20/51897320/htdocs/fotoalbum.php on line 132
Warning: Division by zero in /mnt/web7/33/20/51897320/htdocs/fotoalbum.php on line 129
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /mnt/web7/33/20/51897320/htdocs/fotoalbum.php on line 132
Warning: Division by zero in /mnt/web7/33/20/51897320/htdocs/fotoalbum.php on line 129
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /mnt/web7/33/20/51897320/htdocs/fotoalbum.php on line 132
Kan iemand mij helpen ik heb een paar errors die krijg ik niet weg.
De site waar hij op draaid is www.hdvdedoorzetters.tk
Deze error is verschillend bij elke dir. ik kan niet vinden waar het aan ligt.
Notice: Undefined offset: 22 in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 203
Notice: Undefined index: dirname in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 205
Notice: Undefined index: dirname in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 42
Warning: getimagesize(/) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 46
Warning: Division by zero in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 58
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 61
Notice: Undefined index: dirname in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 209
Mijn webserver :
Apache/2.2.11 (Win32) PHP/5.2.9-1
MySQL client version: 5.0.51a
PHP extension: mysqli
GD = bundled (2.0.34 compatible) .
Ik hoop dat jullie me kunne helpen
Het script is aangepast alleen met de url dus ?pagina=fotoalbum naar ?page=foto
Alvast bedankt voor de hulp.
De site waar hij op draaid is www.hdvdedoorzetters.tk
Deze error is verschillend bij elke dir. ik kan niet vinden waar het aan ligt.
Notice: Undefined offset: 22 in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 203
Notice: Undefined index: dirname in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 205
Notice: Undefined index: dirname in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 42
Warning: getimagesize(/) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 46
Warning: Division by zero in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 58
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 61
Notice: Undefined index: dirname in C:\wamp\www\Dedoorzetters\modules\foto\foto.php on line 209
Mijn webserver :
Apache/2.2.11 (Win32) PHP/5.2.9-1
MySQL client version: 5.0.51a
PHP extension: mysqli
GD = bundled (2.0.34 compatible) .
Ik hoop dat jullie me kunne helpen
Het script is aangepast alleen met de url dus ?pagina=fotoalbum naar ?page=foto
Alvast bedankt voor de hulp.
Klopt, in mijn eigen, aangepaste versie had ik dat veranderd zodat ?pagina altijd gelijk is aan $map.
Je vraagt $_GET['pagina'] (of ['page'] ook niet op, dus op zich maakt dat niet zoveel uit. Ik zal de aangepaste versie hier ook posten.
Nu kun je ergens echo($maincontent); doen om op die manier het album weer te geven.
Verder gebruikt het JQuery lightbox
(http://leandrovieira.com/projects/jquery/lightbox/)
Voeg het volgende codeblok toe in [head]:
Ik hoop dat ik niets vergeten ben te vermelden. Bij mij werkt het zo.
Je vraagt $_GET['pagina'] (of ['page'] ook niet op, dus op zich maakt dat niet zoveel uit. Ik zal de aangepaste versie hier ook posten.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<?php
/*
* fotoalbum module.
* included door main.inc.php.
* Geeft de variabele $maincontent terug als inhoud voor <div id="maincontent>
* in index.php.
*/
/*
Check op direkte oproep verwijderd
*/
$map = 'photos';
$thumbs = '/nonmaskedthumbs/';
$albumnaam = 'foto\'s'; //Naam voor het laagste niveau
$afbeeldingen = array();
//Deze bestanden uitsluiten
$bad = array(".", "..", ".DS_Store", "_notes", "Thumbs.db", "thumbs", "masks", "photos", "thumbs", "nonmaskedthumbs"); // en alle ander bestanden en mappen die je niet opgenomen wil hebben.
$h_klein = 72; // was 112;
$br_klein = 97;// was 150;
$perpagina = 6; //was 12;
$maincontent='<div id="thumbholder">'.PHP_EOL; //alle output in een <div>
if(isset($_GET['album']) && !empty($_GET['album']))
{
$tmp = explode('/',$_GET['album']);
if($tmp[0] == $map)
{
$map = str_replace(array('.', '\\', ':'), '', $_GET['album']);
}
}
if(isset($_GET['paginanr']) && !empty($_GET['paginanr']) && ctype_digit($_GET['paginanr']))
{
$paginanr = $_GET['paginanr'];
}else{
$paginanr = 1;
}
if(isset($_GET['afbeelding']) && !empty($_GET['afbeelding']))
{
$afbeelding = $_GET['afbeelding'];
}else{
$afbeelding = NULL;
}
function thumbnail($afbeelding, $type,$thumbs) //Thumbnail maken in de map $thumbs
{
$map = $afbeelding['dirname'];
$bestandsnaam = $afbeelding['basename'];
list($type, $h, $br) = $type;
list($br_origineel, $h_origineel, $extensie) = getimagesize($map.'/'.$bestandsnaam);
if(!is_dir($map.$thumbs))
{
mkdir($map.$thumbs, 0777);
chmod($map.$thumbs, 0777);
}
if (($br_origineel < $h_origineel) && ($br > $h))
{
$br = ($h / $h_origineel) * $br_origineel;
}else{
$h = ($br / $br_origineel) * $h_origineel;
}
$afbeelding = imagecreatetruecolor($br, $h);
switch($extensie)
{
case 1:
//gif
$afbeelding_origineel = imagecreatefromgif($map.'/'.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $br, $h, $br_origineel, $h_origineel);
imagegif($afbeelding, $map.$thumbs.$bestandsnaam);
break;
case 2:
//jpg
$afbeelding_origineel = imagecreatefromjpeg($map.'/'.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $br, $h, $br_origineel, $h_origineel);
imagejpeg($afbeelding, $map.$thumbs.$bestandsnaam, 80);
break;
case 3:
//png
$afbeelding_origineel = imagecreatefrompng($map.$bestandsnaam);
$background = imagecolorallocate($afbeelding, 0, 0, 0);
imagecolortransparent($afbeelding, $background); // make the new temp image all transparent
imagealphablending($afbeelding, false); // turn off the alpha blending to keep the alpha channel
imagesavealpha($afbeelding, true);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $br, $h, $br_origineel, $h_origineel);
imagepng($afbeelding, $map.$thumbs.$bestandsnaam);
break;
}
chmod($map.$thumbs.$bestandsnaam, 0777);
return TRUE;
}
// *************************************************************************
// Hier begint het renderen van de pagina.
// *************************************************************************
$tmp = NULL;
// Bovenaan gedefinieerde variabelen.
// $map = 'fotoalbum'; // de map met foto's
// $thumbs = '/nonmaskedthumbs/'; de map met thumbnails
// Uit te sluiten mappen in array $bad
// $bad = array(".", "..", ".DS_Store", "_notes", "Thumbs.db", "thumbs", "masks", "photos", "thumbs", "nonmaskedthumbs");
// *************************************************************************
$count=count(explode('/',$map) );
$teller=0;
//echo $count;
$maincontent .= ''; //Hier content in opslaan en teruggeven
foreach(explode('/',$map) as $tmp2) //Map uit elkaar halen. gebruik de slash
{
$maincontent .= '<a href="?mod=fotoalbum&pagina='. $map. '&album='.$tmp.$tmp2.'">'.$albumnaam.'</a> ';
if ($teller<$count-1) { // Alleen tussen de mappen een '>' teken weergeven.
$maincontent .= '<div id="thumbmapnav">'.PHP_EOL;
}
$tmp = $tmp.$tmp2.'/'; // Dus de naam van de map met een slash
++$teller;
}
$maincontent .= '<br>'.PHP_EOL;
if(!$bestanden = glob($map.'/*.*')) //Alle bestanden vinden
{
$bestanden = array();
}
foreach($bestanden as $bestand) //Haal alle bestanden op uit de Map.
{
if (is_file ( $bestand)) {
$gegevens = getimagesize($bestand);
$extensie = $gegevens['mime'];
if($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png')
{
$afbeeldingen[] = $bestand;
}
}
}
$aantalfotos = count($afbeeldingen);
// Vanaf hier de mappen afhandelen
if(!$mappen = glob($map.'/*', GLOB_ONLYDIR))
{
$mappen = array();
}
foreach($mappen as $album)
{
if (!array_search(basename($album),$bad)) {
if(basename($album) != $thumbs) {
$maincontent .= '<a href="?mod=fotoalbum&pagina='. $map .'&album='.$album.'">| '.basename($album).'</a><br>'.PHP_EOL;
}
}
}
$maincontent .= '</div>' . PHP_EOL;
// **********************
//Navigatie samenstellen.
// **********************
if($aantalfotos > $perpagina)
{
if ($paginanr > 1) //Achteruit, alleen na pagina 1
{
$maincontent .= '<div id="thumbnav"><a href="?mod=fotoalbum&pagina='. $map .'&album='.$map.'&paginanr='.($paginanr - 1).'" title="Ga naar pagina '.($paginanr - 1).'"><< Vorige</a>';
}else{
$maincontent .= '<div id="thumbnav"><< Vorige';
}
$maincontent .= ' Pagina '.$paginanr.' van '.ceil($aantalfotos/$perpagina).' ';
if ($paginanr < ceil(($aantalfotos)/$perpagina)) //Vooruit alleen vóór de laatste pagina.
{
$maincontent .= '<a href="?mod=fotoalbum&pagina='. $map .'&album='.$map.'&paginanr='.($paginanr + 1).'" title="Ga naar pagina '.($paginanr + 1).'">Volgende >></a><br></div>'.PHP_EOL;
}else{
$maincontent .= 'Volgende >><br></div>'.PHP_EOL;
}
}else {
$maincontent .= '<div id="thumbnav">pagina 1 van 1</div>';
}
for($fotonr = (($paginanr -1) * $perpagina); $fotonr <= ((($paginanr -1) * $perpagina) + ($perpagina - 1)) && $fotonr < count($afbeeldingen); $fotonr += 1)
{
$__debgfotonr=$fotonr;$__debgcntbest=count($bestanden);
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if(!file_exists($afbeelding['dirname'].$thumbs.$afbeelding['basename']))
{
if(thumbnail($afbeelding, array('klein', $h_klein, $br_klein),$thumbs))
{
$maincontent .= '<a href="' . $afbeelding['dirname'] . '/' . $afbeelding['basename'] . '" title="' . $afbeelding['dirname'] . '" alt="' . $afbeelding['basename'] . '" rel="lightbox">';
$maincontent .= '<img src="' . $afbeelding['dirname'] . $thumbs . $afbeelding['basename'] . '" title="' . $afbeelding['basename'] . '" alt="' . $afbeelding['basename'] . '" class="thumbs"></a>'. PHP_EOL;
}
}else{
$maincontent .= '<a href="' . $afbeelding['dirname'] . '/' . $afbeelding['basename'] . '" title="' . $afbeelding['dirname'] . '" alt="' . $afbeelding['basename'] . '" rel="lightbox">';
$maincontent .= '<img src="' . $afbeelding['dirname'] . $thumbs . $afbeelding['basename'] . '" title="' . $afbeelding['basename'] . '" alt="' . $afbeelding['basename'] . '" class="thumbs"></a>'. PHP_EOL;
}
}
?>
/*
* fotoalbum module.
* included door main.inc.php.
* Geeft de variabele $maincontent terug als inhoud voor <div id="maincontent>
* in index.php.
*/
/*
Check op direkte oproep verwijderd
*/
$map = 'photos';
$thumbs = '/nonmaskedthumbs/';
$albumnaam = 'foto\'s'; //Naam voor het laagste niveau
$afbeeldingen = array();
//Deze bestanden uitsluiten
$bad = array(".", "..", ".DS_Store", "_notes", "Thumbs.db", "thumbs", "masks", "photos", "thumbs", "nonmaskedthumbs"); // en alle ander bestanden en mappen die je niet opgenomen wil hebben.
$h_klein = 72; // was 112;
$br_klein = 97;// was 150;
$perpagina = 6; //was 12;
$maincontent='<div id="thumbholder">'.PHP_EOL; //alle output in een <div>
if(isset($_GET['album']) && !empty($_GET['album']))
{
$tmp = explode('/',$_GET['album']);
if($tmp[0] == $map)
{
$map = str_replace(array('.', '\\', ':'), '', $_GET['album']);
}
}
if(isset($_GET['paginanr']) && !empty($_GET['paginanr']) && ctype_digit($_GET['paginanr']))
{
$paginanr = $_GET['paginanr'];
}else{
$paginanr = 1;
}
if(isset($_GET['afbeelding']) && !empty($_GET['afbeelding']))
{
$afbeelding = $_GET['afbeelding'];
}else{
$afbeelding = NULL;
}
function thumbnail($afbeelding, $type,$thumbs) //Thumbnail maken in de map $thumbs
{
$map = $afbeelding['dirname'];
$bestandsnaam = $afbeelding['basename'];
list($type, $h, $br) = $type;
list($br_origineel, $h_origineel, $extensie) = getimagesize($map.'/'.$bestandsnaam);
if(!is_dir($map.$thumbs))
{
mkdir($map.$thumbs, 0777);
chmod($map.$thumbs, 0777);
}
if (($br_origineel < $h_origineel) && ($br > $h))
{
$br = ($h / $h_origineel) * $br_origineel;
}else{
$h = ($br / $br_origineel) * $h_origineel;
}
$afbeelding = imagecreatetruecolor($br, $h);
switch($extensie)
{
case 1:
//gif
$afbeelding_origineel = imagecreatefromgif($map.'/'.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $br, $h, $br_origineel, $h_origineel);
imagegif($afbeelding, $map.$thumbs.$bestandsnaam);
break;
case 2:
//jpg
$afbeelding_origineel = imagecreatefromjpeg($map.'/'.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $br, $h, $br_origineel, $h_origineel);
imagejpeg($afbeelding, $map.$thumbs.$bestandsnaam, 80);
break;
case 3:
//png
$afbeelding_origineel = imagecreatefrompng($map.$bestandsnaam);
$background = imagecolorallocate($afbeelding, 0, 0, 0);
imagecolortransparent($afbeelding, $background); // make the new temp image all transparent
imagealphablending($afbeelding, false); // turn off the alpha blending to keep the alpha channel
imagesavealpha($afbeelding, true);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $br, $h, $br_origineel, $h_origineel);
imagepng($afbeelding, $map.$thumbs.$bestandsnaam);
break;
}
chmod($map.$thumbs.$bestandsnaam, 0777);
return TRUE;
}
// *************************************************************************
// Hier begint het renderen van de pagina.
// *************************************************************************
$tmp = NULL;
// Bovenaan gedefinieerde variabelen.
// $map = 'fotoalbum'; // de map met foto's
// $thumbs = '/nonmaskedthumbs/'; de map met thumbnails
// Uit te sluiten mappen in array $bad
// $bad = array(".", "..", ".DS_Store", "_notes", "Thumbs.db", "thumbs", "masks", "photos", "thumbs", "nonmaskedthumbs");
// *************************************************************************
$count=count(explode('/',$map) );
$teller=0;
//echo $count;
$maincontent .= ''; //Hier content in opslaan en teruggeven
foreach(explode('/',$map) as $tmp2) //Map uit elkaar halen. gebruik de slash
{
$maincontent .= '<a href="?mod=fotoalbum&pagina='. $map. '&album='.$tmp.$tmp2.'">'.$albumnaam.'</a> ';
if ($teller<$count-1) { // Alleen tussen de mappen een '>' teken weergeven.
$maincontent .= '<div id="thumbmapnav">'.PHP_EOL;
}
$tmp = $tmp.$tmp2.'/'; // Dus de naam van de map met een slash
++$teller;
}
$maincontent .= '<br>'.PHP_EOL;
if(!$bestanden = glob($map.'/*.*')) //Alle bestanden vinden
{
$bestanden = array();
}
foreach($bestanden as $bestand) //Haal alle bestanden op uit de Map.
{
if (is_file ( $bestand)) {
$gegevens = getimagesize($bestand);
$extensie = $gegevens['mime'];
if($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png')
{
$afbeeldingen[] = $bestand;
}
}
}
$aantalfotos = count($afbeeldingen);
// Vanaf hier de mappen afhandelen
if(!$mappen = glob($map.'/*', GLOB_ONLYDIR))
{
$mappen = array();
}
foreach($mappen as $album)
{
if (!array_search(basename($album),$bad)) {
if(basename($album) != $thumbs) {
$maincontent .= '<a href="?mod=fotoalbum&pagina='. $map .'&album='.$album.'">| '.basename($album).'</a><br>'.PHP_EOL;
}
}
}
$maincontent .= '</div>' . PHP_EOL;
// **********************
//Navigatie samenstellen.
// **********************
if($aantalfotos > $perpagina)
{
if ($paginanr > 1) //Achteruit, alleen na pagina 1
{
$maincontent .= '<div id="thumbnav"><a href="?mod=fotoalbum&pagina='. $map .'&album='.$map.'&paginanr='.($paginanr - 1).'" title="Ga naar pagina '.($paginanr - 1).'"><< Vorige</a>';
}else{
$maincontent .= '<div id="thumbnav"><< Vorige';
}
$maincontent .= ' Pagina '.$paginanr.' van '.ceil($aantalfotos/$perpagina).' ';
if ($paginanr < ceil(($aantalfotos)/$perpagina)) //Vooruit alleen vóór de laatste pagina.
{
$maincontent .= '<a href="?mod=fotoalbum&pagina='. $map .'&album='.$map.'&paginanr='.($paginanr + 1).'" title="Ga naar pagina '.($paginanr + 1).'">Volgende >></a><br></div>'.PHP_EOL;
}else{
$maincontent .= 'Volgende >><br></div>'.PHP_EOL;
}
}else {
$maincontent .= '<div id="thumbnav">pagina 1 van 1</div>';
}
for($fotonr = (($paginanr -1) * $perpagina); $fotonr <= ((($paginanr -1) * $perpagina) + ($perpagina - 1)) && $fotonr < count($afbeeldingen); $fotonr += 1)
{
$__debgfotonr=$fotonr;$__debgcntbest=count($bestanden);
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if(!file_exists($afbeelding['dirname'].$thumbs.$afbeelding['basename']))
{
if(thumbnail($afbeelding, array('klein', $h_klein, $br_klein),$thumbs))
{
$maincontent .= '<a href="' . $afbeelding['dirname'] . '/' . $afbeelding['basename'] . '" title="' . $afbeelding['dirname'] . '" alt="' . $afbeelding['basename'] . '" rel="lightbox">';
$maincontent .= '<img src="' . $afbeelding['dirname'] . $thumbs . $afbeelding['basename'] . '" title="' . $afbeelding['basename'] . '" alt="' . $afbeelding['basename'] . '" class="thumbs"></a>'. PHP_EOL;
}
}else{
$maincontent .= '<a href="' . $afbeelding['dirname'] . '/' . $afbeelding['basename'] . '" title="' . $afbeelding['dirname'] . '" alt="' . $afbeelding['basename'] . '" rel="lightbox">';
$maincontent .= '<img src="' . $afbeelding['dirname'] . $thumbs . $afbeelding['basename'] . '" title="' . $afbeelding['basename'] . '" alt="' . $afbeelding['basename'] . '" class="thumbs"></a>'. PHP_EOL;
}
}
?>
Nu kun je ergens echo($maincontent); doen om op die manier het album weer te geven.
Verder gebruikt het JQuery lightbox
(http://leandrovieira.com/projects/jquery/lightbox/)
Voeg het volgende codeblok toe in [head]:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include ("naamvanditscript.php"); //Voeg hier de naam en het pad van dit script toe.
?>
<!-- de paden naar de scripts aanpassen -->
<script type="text/javascript" src="scripts/jquery-lightbox-0.5/js/jquery.lightbox-0.5.js"></script>
<script type="text/javascript" src="scripts/interface 1.2/interface.js"></script>
<script type="text/javascript">
$(function() {
$('a[@rel*=lightbox]').lightBox({
overlayBgColor: '#FFF',
overlayOpacity: 0.6,
imageLoading: './css/images/imagebox/loading.gif', //Pad veranderen naar juiste
imageBtnClose: './css/images/imagebox/close.jpg', //idem
imageBtnPrev: './css/images/imagebox/prev_image.png', //idem
imageBtnNext: './css/images/imagebox/next_image.png', //idem
containerResizeSpeed: 350,
txtImage: 'Foto',
txtOf: 'van'
});
});
include ("naamvanditscript.php"); //Voeg hier de naam en het pad van dit script toe.
?>
<!-- de paden naar de scripts aanpassen -->
<script type="text/javascript" src="scripts/jquery-lightbox-0.5/js/jquery.lightbox-0.5.js"></script>
<script type="text/javascript" src="scripts/interface 1.2/interface.js"></script>
<script type="text/javascript">
$(function() {
$('a[@rel*=lightbox]').lightBox({
overlayBgColor: '#FFF',
overlayOpacity: 0.6,
imageLoading: './css/images/imagebox/loading.gif', //Pad veranderen naar juiste
imageBtnClose: './css/images/imagebox/close.jpg', //idem
imageBtnPrev: './css/images/imagebox/prev_image.png', //idem
imageBtnNext: './css/images/imagebox/next_image.png', //idem
containerResizeSpeed: 350,
txtImage: 'Foto',
txtOf: 'van'
});
});
Ik hoop dat ik niets vergeten ben te vermelden. Bij mij werkt het zo.
Alle verwijzingen naar '?pagina=' kunnen er nog uit.
$pagina is nu steeds gelijk aan '?album' .
(Bij mij is die al toegevoegd door ?mod=fotoalbum&..... Hier komt dan de rest van de url) bovendien ga je door de lightbox ook niet naar een andere pagina.
kortom ?mod = ?pagina.
Stom had ik even moeten veranderen.
Nu snap ik ook wat je bedoelde met:
$pagina is nu steeds gelijk aan '?album' .
(Bij mij is die al toegevoegd door ?mod=fotoalbum&..... Hier komt dan de rest van de url) bovendien ga je door de lightbox ook niet naar een andere pagina.
kortom ?mod = ?pagina.
Stom had ik even moeten veranderen.
Nu snap ik ook wat je bedoelde met:
Quote:
e $map is in dit geval alleen voor de map met afbeeldingen. Heeft -niks- te maken met de ?pagina=fotoalbum...
Ik heb dit script ook gebruikt om een fotoalbum te maken en het werkt allemaal prima alleen heb ik de website van arjan gezien dat hij het nog mooier heeft gemaakt. Hij heeft namelijk toegevoegd dat er boven elke map binnen de map fotoalbum een afbeelding wordt weergegeven die in die map zit. Dus er wordt alvast tipje van de sluier opgelicht zeg maar. Hier http://i-cey.net/?pagina=fotoalbum kunnen jullie zien wat ik bedoel. Bijvoorbeeld in die map Kenia zie je erboven alvast een van de foto's uit die map. Dat wil ik er ook graag in verwerken. Kan iemand mij, als php leek, uitleggen hoe ik dat doe?
Hoop iets van jullie te horen. Alvast bedankt.
Bart
Hoop iets van jullie te horen. Alvast bedankt.
Bart
Ik heb dit fotoalbum script en deze haalt de bestanden uit de map: fotoalbum
In de map fotoalbum heb ik aantal mappen gezet met een nummer en dan een naam:
97 Fietsen
98 Motor
99 Auto
Nu wil ik dat hij alleen het gedeelte weergeeft wat naar het nummer komt.
Ik kom hier alleen niet uit, kan iemand mij helpen?
In de map fotoalbum heb ik aantal mappen gezet met een nummer en dan een naam:
97 Fietsen
98 Motor
99 Auto
Nu wil ik dat hij alleen het gedeelte weergeeft wat naar het nummer komt.
Ik kom hier alleen niet uit, kan iemand mij helpen?
Ik gebruik al enige tijd, met veel plezier, bovenstaande fotoalbum. Maar ik zou graag de thumbnails van de mappen willen weergeven en daarbij de mappen automatisch op datum sorteren. Ik heb al het een en ander geprobeerd, maar aangezien ik zelf niet heel erg bekend ben met php loop ik iedere keer vast. Iemand bereid op de codes hier te posten?
Boys
http://rwanda.chilion.nl/foto/
Ik krijg zo weinig tevoorschijn ;)
Hulp wordt zeer op prijs gesteld :)
Chilion
http://rwanda.chilion.nl/foto/
Ik krijg zo weinig tevoorschijn ;)
Hulp wordt zeer op prijs gesteld :)
Chilion
Dames/Heren,
(OPGELOST! zie onderaan)
enige tijd geleden heb ik dit script met succes getest op een NAS waar ook een webservertje op zit (Qnap). Onlangs probeerde ik opnieuw dit script uit te voeren maar nu zonder succes :(.
Wat is het probleem: wanneer ik de pagina open dan wordt er niets getoond. Als ik de betrefftende fotoalbum map open dan zie ik dat er wel een thumbs map is aangemaakt maar zonder thumbs erin.... er worden geen foutmeldingen getoond en gezien ik wel foto's kan uploaden en er ook een map wordt aangemaakt lijkt het alsof de rechten goed staan... :( wat doe ik fout?
Oplossing:
op een NAS staan de php.ini instellingen redelijk strict. Zo mag een php script standaard niet meer dan 8MB verbruiken. De firmware voor deze NAS systemen is uniform, of je nu een model 109 met 128 mb of een 109proII hebt met 256 mb. Omdat ik meer intern geheugen heb, heb ik deze instelling omhoog gegooid naar 32MB. Dit werkt nu als een dijk... afgezien van de snelheid natuurlijk van 500MHz is nu niet iets om over naar huis te schrijven als je foto's gaat resizen, maarja het is ook voor een simpel web album voor de opa's en oma's die hun kleinkind willen zien opgroeien. Anyway, waarom 't script eerst wel draaide? heel simpel, voor de test gebruikte ik kleinere foto's, nu ik fullsize ging struikelde het systeem over de grootte ;)
(OPGELOST! zie onderaan)
enige tijd geleden heb ik dit script met succes getest op een NAS waar ook een webservertje op zit (Qnap). Onlangs probeerde ik opnieuw dit script uit te voeren maar nu zonder succes :(.
Wat is het probleem: wanneer ik de pagina open dan wordt er niets getoond. Als ik de betrefftende fotoalbum map open dan zie ik dat er wel een thumbs map is aangemaakt maar zonder thumbs erin.... er worden geen foutmeldingen getoond en gezien ik wel foto's kan uploaden en er ook een map wordt aangemaakt lijkt het alsof de rechten goed staan... :( wat doe ik fout?
Oplossing:
op een NAS staan de php.ini instellingen redelijk strict. Zo mag een php script standaard niet meer dan 8MB verbruiken. De firmware voor deze NAS systemen is uniform, of je nu een model 109 met 128 mb of een 109proII hebt met 256 mb. Omdat ik meer intern geheugen heb, heb ik deze instelling omhoog gegooid naar 32MB. Dit werkt nu als een dijk... afgezien van de snelheid natuurlijk van 500MHz is nu niet iets om over naar huis te schrijven als je foto's gaat resizen, maarja het is ook voor een simpel web album voor de opa's en oma's die hun kleinkind willen zien opgroeien. Anyway, waarom 't script eerst wel draaide? heel simpel, voor de test gebruikte ik kleinere foto's, nu ik fullsize ging struikelde het systeem over de grootte ;)
kan iemand me helpen, ik heb het script werkend, maar krijg nu geen plaatjes te zien als overzicht,
www.chriswinkel.nl/OTA/winkel/?page=foto
www.chriswinkel.nl/OTA/winkel/?page=foto
Hallo Chris J probeer deze is
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<?php
$map = 'fotoalbum';
$afbeeldingen = array();
$hoogte_klein = 112;
$breedte_klein = 150;
$hoogte_groot = 400;
$breedte_groot = 700;
$perpagina = 12;
if (isset ($_GET['album']) && !empty ($_GET['album'])) {
$tmp = explode('/', $_GET['album']);
if ($tmp[0] == $map) {
$map = str_replace(array('.', '\\', ':'), '', $_GET['album']);
}
}
if (isset ($_GET['paginanr']) && !empty ($_GET['paginanr']) && ctype_digit($_GET['paginanr'])) {
$paginanr = $_GET['paginanr'];
}
else {
$paginanr = 1;
}
if (isset ($_GET['afbeelding']) && !empty ($_GET['afbeelding'])) {
$afbeelding = $_GET['afbeelding'];
}
else {
$afbeelding = NULL;
}
function thumbnail($afbeelding, $type) {
$map = $afbeelding['dirname'];
$bestandsnaam = $afbeelding['basename'];
list($type, $hoogte, $breedte) = $type;
list($breedte_origineel, $hoogte_origineel, $extensie) = getimagesize($map . '/' . $bestandsnaam);
if (!is_dir($map . '/thumbs/')) {
mkdir($map . '/thumbs/', 0777);
chmod($map . '/thumbs/', 0777);
}
if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte)) {
$breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
}
else {
$hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
}
$afbeelding = imagecreatetruecolor($breedte, $hoogte);
switch ($extensie) {
case 1 :
//gif
$afbeelding_origineel = imagecreatefromgif($map . '/' . $bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagegif($afbeelding, $map . '/thumbs/' . $type . '_' . $bestandsnaam);
break;
case 2 :
//jpg
$afbeelding_origineel = imagecreatefromjpeg($map . '/' . $bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagejpeg($afbeelding, $map . '/thumbs/' . $type . '_' . $bestandsnaam, 80);
break;
case 3 :
//png
$afbeelding_origineel = imagecreatefrompng($map . '/' . $bestandsnaam);
$background = imagecolorallocate($afbeelding, 0, 0, 0);
imagecolortransparent($afbeelding, $background);
// make the new temp image all transparent
imagealphablending($afbeelding, false);
// turn off the alpha blending to keep the alpha channel
imagesavealpha($afbeelding, true);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagepng($afbeelding, $map . '/thumbs/' . $type . '_' . $bestandsnaam);
break;
}
chmod($map . '/thumbs/' . $type . '_' . $bestandsnaam, 0777);
return TRUE;
}
$tmp = NULL;
foreach (explode('/', $map) as $tmp2) {
echo '>> <a href='?pagina=fotoalbum&album=' . $tmp . $tmp2 . ''>' . ucfirst($tmp2) . '</a> ';
$tmp = $tmp . $tmp2 . '/';
}
echo '<br><br>' . PHP_EOL;
if (!$bestanden = glob($map . '/*.*')) {
$bestanden = array();
}
foreach ($bestanden as $bestand) {
$gegevens = getimagesize($bestand);
$extensie = $gegevens['mime'];
if ($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png') {
$afbeeldingen[] = $bestand;
}
}
$aantalfotos = count($afbeeldingen);
if (isset ($afbeelding)) {
foreach ($afbeeldingen as $id => $naam) {
if (basename($naam) == $afbeelding) {
$fotonr = $id;
}
}
if (isset ($fotonr)) {
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if ($fotonr > 0) {
$vorige_afbeelding = pathinfo($afbeeldingen[$fotonr - 1]);
echo '<a href='?pagina=fotoalbum&album=' . $map . '&afbeelding=' . $vorige_afbeelding['basename'] . '' title='Ga naar foto ' . $vorige_afbeelding['basename'] . ''><< Vorige</a>';
}
else {
echo '<< Vorige';
}
echo ' Foto ' . ($fotonr + 1) . ' van ' . $aantalfotos . ' ';
if ($fotonr < $aantalfotos - 1) {
$volgende_afbeelding = pathinfo($afbeeldingen[$fotonr + 1]);
echo '<a href='?pagina=fotoalbum&album=' . $map . '&afbeelding=' . $volgende_afbeelding['basename'] . '' title='Ga naar foto ' . $volgende_afbeelding['basename'] . ''>Volgende >></a><br>';
}
else {
echo 'Volgende >><br>' . PHP_EOL;
}
if (!file_exists($afbeelding['dirname'] . '/thumbs/groot_' . $afbeelding['basename'])) {
if (thumbnail($afbeelding, array('groot', $hoogte_groot, $breedte_groot))) {
echo '<a href='' . $afbeelding['dirname'] . '/' . $afbeelding['basename'] . '' target='_BLANK'><img src='' . $afbeelding['dirname'] . '/thumbs/groot_' . $afbeelding['basename'] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'></a>' . PHP_EOL;
}
}
else {
echo '<a href='' . $afbeelding['dirname'] . '/' . $afbeelding['basename'] . '' target='_BLANK'><img src='' . $afbeelding['dirname'] . '/thumbs/groot_' . $afbeelding['basename'] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'></a>' . PHP_EOL;
}
}
else {
echo '<p>Sorry, deze foto bestaat niet!</p>';
}
}
else {
if (!$mappen = glob($map . '/*', GLOB_ONLYDIR)) {
$mappen = array();
}
foreach ($mappen as $album) {
if (basename($album) != 'thumbs') {
// Nieuw Nieuw Nieuw Nieuw //
$exts = 'jpg jpeg png gif';
$files = array();
$i = - 1;
if ('' == $album)
$album = './';
$handle = opendir($album);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach ($exts as $ext) {
if (preg_match('/\.' . $ext . '$/i', $file, $test)) {
$files[] = $file;
++$i;
}
}
}
closedir($handle);
mt_srand((double) microtime() * 1000000);
$rand = mt_rand(0, $i);
// Eind Eind Eind Eind Eind //
echo '<img src='' . $album . '/thumbs/klein_' . $files[$rand] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'><br />';
echo '<a href='?pagina=fotoalbum&album=' . $album . ''>' . ucfirst(basename($album)) . '</a><br><br />' . PHP_EOL;
}
}
if ($aantalfotos > $perpagina) {
if ($paginanr > 1) {
echo '<a href='?pagina=fotoalbum&album=' . $map . '&paginanr=' . ($paginanr - 1) . '' title='Ga naar pagina ' . ($paginanr - 1) . ''><< Vorige</a>';
}
else {
echo '<< Vorige';
}
echo ' Pagina ' . $paginanr . ' van ' . ceil($aantalfotos / $perpagina) . ' ';
if ($paginanr < ceil(($aantalfotos) / $perpagina)) {
echo '<a href='?pagina=fotoalbum&album=' . $map . '&paginanr=' . ($paginanr + 1) . '' title='Ga naar pagina ' . ($paginanr + 1) . ''>Volgende >></a><br>';
}
else {
echo 'Volgende >><br>' . PHP_EOL;
}
}
for ($fotonr = (($paginanr - 1) * $perpagina); $fotonr <= ((($paginanr - 1) * $perpagina) + ($perpagina - 1)) && $fotonr < count($bestanden); $fotonr += 1) {
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if (!file_exists($afbeelding['dirname'] . '/thumbs/klein_' . $afbeelding['basename'])) {
if (thumbnail($afbeelding, array('klein', $hoogte_klein, $breedte_klein))) {
echo '<a href='?pagina=fotoalbum&album=' . $map . '&afbeelding=' . $afbeelding['basename'] . ''><img src='' . $afbeelding['dirname'] . '/thumbs/klein_' . $afbeelding['basename'] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'></a>' . PHP_EOL;
}
}
else {
echo '<a href='?pagina=fotoalbum&album=' . $map . '&afbeelding=' . $afbeelding['basename'] . ''><img src='' . $afbeelding['dirname'] . '/thumbs/klein_' . $afbeelding['basename'] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'></a>' . PHP_EOL;
}
}
}
?>
$map = 'fotoalbum';
$afbeeldingen = array();
$hoogte_klein = 112;
$breedte_klein = 150;
$hoogte_groot = 400;
$breedte_groot = 700;
$perpagina = 12;
if (isset ($_GET['album']) && !empty ($_GET['album'])) {
$tmp = explode('/', $_GET['album']);
if ($tmp[0] == $map) {
$map = str_replace(array('.', '\\', ':'), '', $_GET['album']);
}
}
if (isset ($_GET['paginanr']) && !empty ($_GET['paginanr']) && ctype_digit($_GET['paginanr'])) {
$paginanr = $_GET['paginanr'];
}
else {
$paginanr = 1;
}
if (isset ($_GET['afbeelding']) && !empty ($_GET['afbeelding'])) {
$afbeelding = $_GET['afbeelding'];
}
else {
$afbeelding = NULL;
}
function thumbnail($afbeelding, $type) {
$map = $afbeelding['dirname'];
$bestandsnaam = $afbeelding['basename'];
list($type, $hoogte, $breedte) = $type;
list($breedte_origineel, $hoogte_origineel, $extensie) = getimagesize($map . '/' . $bestandsnaam);
if (!is_dir($map . '/thumbs/')) {
mkdir($map . '/thumbs/', 0777);
chmod($map . '/thumbs/', 0777);
}
if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte)) {
$breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
}
else {
$hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
}
$afbeelding = imagecreatetruecolor($breedte, $hoogte);
switch ($extensie) {
case 1 :
//gif
$afbeelding_origineel = imagecreatefromgif($map . '/' . $bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagegif($afbeelding, $map . '/thumbs/' . $type . '_' . $bestandsnaam);
break;
case 2 :
//jpg
$afbeelding_origineel = imagecreatefromjpeg($map . '/' . $bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagejpeg($afbeelding, $map . '/thumbs/' . $type . '_' . $bestandsnaam, 80);
break;
case 3 :
//png
$afbeelding_origineel = imagecreatefrompng($map . '/' . $bestandsnaam);
$background = imagecolorallocate($afbeelding, 0, 0, 0);
imagecolortransparent($afbeelding, $background);
// make the new temp image all transparent
imagealphablending($afbeelding, false);
// turn off the alpha blending to keep the alpha channel
imagesavealpha($afbeelding, true);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagepng($afbeelding, $map . '/thumbs/' . $type . '_' . $bestandsnaam);
break;
}
chmod($map . '/thumbs/' . $type . '_' . $bestandsnaam, 0777);
return TRUE;
}
$tmp = NULL;
foreach (explode('/', $map) as $tmp2) {
echo '>> <a href='?pagina=fotoalbum&album=' . $tmp . $tmp2 . ''>' . ucfirst($tmp2) . '</a> ';
$tmp = $tmp . $tmp2 . '/';
}
echo '<br><br>' . PHP_EOL;
if (!$bestanden = glob($map . '/*.*')) {
$bestanden = array();
}
foreach ($bestanden as $bestand) {
$gegevens = getimagesize($bestand);
$extensie = $gegevens['mime'];
if ($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png') {
$afbeeldingen[] = $bestand;
}
}
$aantalfotos = count($afbeeldingen);
if (isset ($afbeelding)) {
foreach ($afbeeldingen as $id => $naam) {
if (basename($naam) == $afbeelding) {
$fotonr = $id;
}
}
if (isset ($fotonr)) {
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if ($fotonr > 0) {
$vorige_afbeelding = pathinfo($afbeeldingen[$fotonr - 1]);
echo '<a href='?pagina=fotoalbum&album=' . $map . '&afbeelding=' . $vorige_afbeelding['basename'] . '' title='Ga naar foto ' . $vorige_afbeelding['basename'] . ''><< Vorige</a>';
}
else {
echo '<< Vorige';
}
echo ' Foto ' . ($fotonr + 1) . ' van ' . $aantalfotos . ' ';
if ($fotonr < $aantalfotos - 1) {
$volgende_afbeelding = pathinfo($afbeeldingen[$fotonr + 1]);
echo '<a href='?pagina=fotoalbum&album=' . $map . '&afbeelding=' . $volgende_afbeelding['basename'] . '' title='Ga naar foto ' . $volgende_afbeelding['basename'] . ''>Volgende >></a><br>';
}
else {
echo 'Volgende >><br>' . PHP_EOL;
}
if (!file_exists($afbeelding['dirname'] . '/thumbs/groot_' . $afbeelding['basename'])) {
if (thumbnail($afbeelding, array('groot', $hoogte_groot, $breedte_groot))) {
echo '<a href='' . $afbeelding['dirname'] . '/' . $afbeelding['basename'] . '' target='_BLANK'><img src='' . $afbeelding['dirname'] . '/thumbs/groot_' . $afbeelding['basename'] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'></a>' . PHP_EOL;
}
}
else {
echo '<a href='' . $afbeelding['dirname'] . '/' . $afbeelding['basename'] . '' target='_BLANK'><img src='' . $afbeelding['dirname'] . '/thumbs/groot_' . $afbeelding['basename'] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'></a>' . PHP_EOL;
}
}
else {
echo '<p>Sorry, deze foto bestaat niet!</p>';
}
}
else {
if (!$mappen = glob($map . '/*', GLOB_ONLYDIR)) {
$mappen = array();
}
foreach ($mappen as $album) {
if (basename($album) != 'thumbs') {
// Nieuw Nieuw Nieuw Nieuw //
$exts = 'jpg jpeg png gif';
$files = array();
$i = - 1;
if ('' == $album)
$album = './';
$handle = opendir($album);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach ($exts as $ext) {
if (preg_match('/\.' . $ext . '$/i', $file, $test)) {
$files[] = $file;
++$i;
}
}
}
closedir($handle);
mt_srand((double) microtime() * 1000000);
$rand = mt_rand(0, $i);
// Eind Eind Eind Eind Eind //
echo '<img src='' . $album . '/thumbs/klein_' . $files[$rand] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'><br />';
echo '<a href='?pagina=fotoalbum&album=' . $album . ''>' . ucfirst(basename($album)) . '</a><br><br />' . PHP_EOL;
}
}
if ($aantalfotos > $perpagina) {
if ($paginanr > 1) {
echo '<a href='?pagina=fotoalbum&album=' . $map . '&paginanr=' . ($paginanr - 1) . '' title='Ga naar pagina ' . ($paginanr - 1) . ''><< Vorige</a>';
}
else {
echo '<< Vorige';
}
echo ' Pagina ' . $paginanr . ' van ' . ceil($aantalfotos / $perpagina) . ' ';
if ($paginanr < ceil(($aantalfotos) / $perpagina)) {
echo '<a href='?pagina=fotoalbum&album=' . $map . '&paginanr=' . ($paginanr + 1) . '' title='Ga naar pagina ' . ($paginanr + 1) . ''>Volgende >></a><br>';
}
else {
echo 'Volgende >><br>' . PHP_EOL;
}
}
for ($fotonr = (($paginanr - 1) * $perpagina); $fotonr <= ((($paginanr - 1) * $perpagina) + ($perpagina - 1)) && $fotonr < count($bestanden); $fotonr += 1) {
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if (!file_exists($afbeelding['dirname'] . '/thumbs/klein_' . $afbeelding['basename'])) {
if (thumbnail($afbeelding, array('klein', $hoogte_klein, $breedte_klein))) {
echo '<a href='?pagina=fotoalbum&album=' . $map . '&afbeelding=' . $afbeelding['basename'] . ''><img src='' . $afbeelding['dirname'] . '/thumbs/klein_' . $afbeelding['basename'] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'></a>' . PHP_EOL;
}
}
else {
echo '<a href='?pagina=fotoalbum&album=' . $map . '&afbeelding=' . $afbeelding['basename'] . ''><img src='' . $afbeelding['dirname'] . '/thumbs/klein_' . $afbeelding['basename'] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'></a>' . PHP_EOL;
}
}
}
?>
Hoi Arjan,
Ik ben een beginneling wat betreft html en php, wil wel graag een website leren maken. Heb dat al wel, maar wilde een mooie fotogalerij toevoegen. Ik heb al een pagina genaamd foto's, met voorlopig alleen 'binnenkort komen de foto's online'. Bovenaan is er ook een menu, ik vroeg mij dus af wat ik fout doe, want ik krijg steeds op de hele pagina, onder menu de code te zien die ik geplakt heb in mijn pagina.
Zo ziet het er dus nu uit:
Niels: Code even weggehaald.
Ik ben een beginneling wat betreft html en php, wil wel graag een website leren maken. Heb dat al wel, maar wilde een mooie fotogalerij toevoegen. Ik heb al een pagina genaamd foto's, met voorlopig alleen 'binnenkort komen de foto's online'. Bovenaan is er ook een menu, ik vroeg mij dus af wat ik fout doe, want ik krijg steeds op de hele pagina, onder menu de code te zien die ik geplakt heb in mijn pagina.
Zo ziet het er dus nu uit:
Niels: Code even weggehaald.
Hallo,
Ik heb dit script ook in gebruik genomen, alleen merk ik bij de kleine thumbnails, dat hij 4 liggende foto's langs elkaar zet,als ik hier staande foto's tussen heb staan, zet hij er soms wel 5 of 6 in een rij. Nu dacht ik heel simpel om de thumbnail een div heen te zetten die altijd dezelfde grootte heeft, maar op 1 of andere manier komen deze div's onder elkaar te staan, en ik wou ze gewoon langs elkaar hebben, totdat er 4 staan en dan de volgende rij....
Doe ik dit ergens fout of moet er gewoon wat meer code toegevoegd worden?
Dit heb ik er nu van gemaakt:
Ik heb dit script ook in gebruik genomen, alleen merk ik bij de kleine thumbnails, dat hij 4 liggende foto's langs elkaar zet,als ik hier staande foto's tussen heb staan, zet hij er soms wel 5 of 6 in een rij. Nu dacht ik heel simpel om de thumbnail een div heen te zetten die altijd dezelfde grootte heeft, maar op 1 of andere manier komen deze div's onder elkaar te staan, en ik wou ze gewoon langs elkaar hebben, totdat er 4 staan en dan de volgende rij....
Doe ik dit ergens fout of moet er gewoon wat meer code toegevoegd worden?
Dit heb ik er nu van gemaakt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
if(!file_exists($afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename']))
{
if(thumbnail($afbeelding, array('klein', $hoogte_klein, $breedte_klein)))
{
echo '<div width="'. $breedte_klein. '" height="'. $hoogte_klein. '" style="padding:2px;"><a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$afbeelding['basename'].'"><img src="'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a></div>';
}
}else{
echo '<div width="'. $breedte_klein. '" height="'. $hoogte_klein. '" style="padding:2px;"><a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$afbeelding['basename'].'"><img src="'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a></div>';
}
}
}
?>
if(!file_exists($afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename']))
{
if(thumbnail($afbeelding, array('klein', $hoogte_klein, $breedte_klein)))
{
echo '<div width="'. $breedte_klein. '" height="'. $hoogte_klein. '" style="padding:2px;"><a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$afbeelding['basename'].'"><img src="'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a></div>';
}
}else{
echo '<div width="'. $breedte_klein. '" height="'. $hoogte_klein. '" style="padding:2px;"><a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$afbeelding['basename'].'"><img src="'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a></div>';
}
}
}
?>
Het is me toch gelukt door aan de div via css een vaste breedte mee te geven, en een float:left toe te voegen.
Er is me nu wel een ander ding opgevallen, namelijk: als ik de foto's bekijk, zijn de kleine thumbnails allemaal van dezelfde hoogte. Staand of liggend maakt niet uit.
Maar bij de grotere thumbnails worden de staande foto's kleiner dan de liggende foto's. Kan iemand mij dit verklaren?
Er is me nu wel een ander ding opgevallen, namelijk: als ik de foto's bekijk, zijn de kleine thumbnails allemaal van dezelfde hoogte. Staand of liggend maakt niet uit.
Maar bij de grotere thumbnails worden de staande foto's kleiner dan de liggende foto's. Kan iemand mij dit verklaren?
Ik ben een totaal beginner met php.Ik zou heel graag een foto pagina zoals dit ik kwam dit script tegen en wil het gaag gebruiken. In de beschrijving staat php gooi het ergens. Ik zie de php en kopier het en plak het waar...Zou iemand mij op weg willen helpen.Als ik in de code kijk van de fotogallery zie ik nergens een inporp php .dus mijn vraag is hoe moet ik die code opslaan en hoe haal ik hem binnen op mijn pagina. groetjes Ellen
Beste Arjan,
Hoewel dit 14 jaar geleden is ben ik toch geinteresseerd in dit project. Bij mij werkt nu alles prima. Ik wil alleen nog een css-file toevoegen zodat ik de lay-out kan aanpassen. Hoe kan ik dat doen? Ik zie namelijk nergens in de code een html header staan.
Groet, Gus
Hoewel dit 14 jaar geleden is ben ik toch geinteresseerd in dit project. Bij mij werkt nu alles prima. Ik wil alleen nog een css-file toevoegen zodat ik de lay-out kan aanpassen. Hoe kan ik dat doen? Ik zie namelijk nergens in de code een html header staan.
Groet, Gus
Om te reageren heb je een account nodig en je moet ingelogd zijn.
Inhoudsopgave
Labels
- Geen tags toegevoegd.
PHP hulp
0 seconden vanaf nu