Automatisch Fotoalbum V3

Door Arjan Kapteijn, 18 jaar geleden, 35.442x 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

  1. automatisch-fotoalbum-v3

 

Er zijn 71 reacties op 'Automatisch fotoalbum v3'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Johan M
Johan M
18 jaar geleden
 
0 +1 -0 -1
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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.
Nick
Nick
18 jaar geleden
 
0 +1 -0 -1
Goed script en bij mij doet hij het wel hoor maar ga zo door ik wacht nou al met spanning af to v4
Arjan Kapteijn
Arjan Kapteijn
18 jaar geleden
 
0 +1 -0 -1
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.
Johan M
Johan M
18 jaar geleden
 
0 +1 -0 -1
De error op Windows is nu inderdaad weg en de mappen op Linux kunnen probleemloos verwijderd worden.
Goed werk,
grz. Johan.
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
Kalle P
Kalle P
18 jaar geleden
 
0 +1 -0 -1
Ik had wel een OOPje verwacht eigenlijk. Sommige dingen hadden wat korter e netter mogen zijn. v3 woeiii
Arjan Kapteijn
Arjan Kapteijn
18 jaar geleden
 
0 +1 -0 -1
Yeah, nou schrijf ik zelf mijn projecten OO, dmv een Framework en het MVC patern, maar voor een gemiddelde PHPHulper is dit eenvoudiger ;).
Toby hinloopen
toby hinloopen
18 jaar geleden
 
0 +1 -0 -1
hhahhaha :P
die 404-error :P

mooie fotos...


18 jaar geleden
 
0 +1 -0 -1
"if(isset($_GET['album']) && !empty($_GET['album']))"

Dit is dus een beetje over de top. De empty-functie doet dit namelijk zelf al. Zie de comments @ empty pagina :-)

Instead of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if (isset($flagvar) && $flagvar)  ... ?>

you can simply use
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if (!empty($flagvar))  ... ?>


for easy readability without warnings.

Voor de duidelijkheid; ik doel dus op de isset ;-)
Arjan Kapteijn
Arjan Kapteijn
18 jaar geleden
 
0 +1 -0 -1
Dat was vroeger niet zo en ik wil geen problemen veroorzaken bij mensen die (op hun shared webhosting accountje) afhankelijk zijn van een oude versie van PHP.
Richard van Velzen
Richard van Velzen
18 jaar geleden
 
0 +1 -0 -1
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
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
@Arjan

Over dat isset en empty; kijkend naar de changelog op php.net was dat vroeger ook gewoon zo. empty() bevat isset()
Kalle P
Kalle P
18 jaar geleden
 
0 +1 -0 -1
Arjan wel wat scherper worden en over dat OOP gedoe vind ik slecht argument. Kom met wat beters. Als je de tijd voor een versie 3 maakt en je projecten oop doet dan kan je het niveau hier ook naar een hoger leveltje brengen...
Sander Z
Sander Z
18 jaar geleden
 
0 +1 -0 -1
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!
DJ Lars
DJ Lars
18 jaar geleden
 
0 +1 -0 -1
Goed en bruikbaar script! Ik gebruik op dit moment je vorige versie versie in mijn huidige website maar aangezien ik met een nieuwe website bezig ben zal ik daar in zeker deze gaan verwerken. Thanks!
Patrick Helsloot
Patrick Helsloot
18 jaar geleden
 
0 +1 -0 -1
Hoe krijg ik het voor elkaar dat de nieuwste map bovenaan komt te staan? Is daar een script stukje voor?

Groetjes,
Patrick
Peter
peter
18 jaar geleden
 
0 +1 -0 -1
ligt het aan mij, of doen bmp afbeeldingen het niet in dit script, ik krijg deze melding:

Warning: chmod() [function.chmod]: No such file or directory in ... op regel 88

zou iemand daar eens een lichtje op kunnen laten schijnen?
Arjan Kapteijn
Arjan Kapteijn
18 jaar geleden
 
0 +1 -0 -1
BMP staat niet in het lijstje van ondersteunde formaten, zie de switch($extensie) op regel 61. Echter word die CHMOD wel uitgevoerd, ookal doet het script niks met BMP. Niet zo netjes van mij...

Maar BMP is niet echt een lekker formaat voor internet.
Els Pijnen
els Pijnen
18 jaar geleden
 
0 +1 -0 -1
Hallo Arjan, mooi script! waar moet ik het folder.gif plaatsen om voor de link een mooi foldertje te krijgen.
Gr,
Peter
peter
18 jaar geleden
 
0 +1 -0 -1
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
Arjan Kapteijn
Arjan Kapteijn
18 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
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..
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
Ik wilde dit script gebruiken op een site met mod-rewrite. Hierbij dus een nieuwe, mod-rewrite geschikte versie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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">&gt;&gt; <a href="'.$base_url.'">'.$startmap.'</a>';

foreach($map as $link)
{

    echo ' &gt;&gt; <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'].'">&lt;&lt; Vorige</a>';
        }
else{
            echo '&lt;&lt; Vorige';
        }


        echo '&nbsp;&nbsp;&nbsp; Foto '.($fotonr +1).' van '.$aantalfotos.' &nbsp;&nbsp;&nbsp;';

        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 &gt;&gt;</a><br>';
        }
else{
            echo 'Volgende &gt;&gt;<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).'">&lt;&lt; Vorige</a>';
        }
else{
            echo '&lt;&lt; Vorige';
        }


        echo '&nbsp;&nbsp;&nbsp; Pagina '.$paginanr.' van '.ceil($aantalfotos/$perpagina).' &nbsp;&nbsp;&nbsp;';

        if ($paginanr < ceil(($aantalfotos)/$perpagina))
        {

            echo '<a href="'.$base_url.''.$map.'/paginanr='.($paginanr + 1).'" title="Ga naar pagina '.($paginanr + 1).'">Volgende &gt;&gt;</a><br>';
        }
else{
            echo 'Volgende &gt;&gt;<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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
RewriteEngine On

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.
Leander
Leander
18 jaar geleden
 
0 +1 -0 -1
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.
Arjan Kapteijn
Arjan Kapteijn
18 jaar geleden
 
0 +1 -0 -1
PHP heeft geen schrijfrechten op de fotoalbum map.
Leander
Leander
18 jaar geleden
 
0 +1 -0 -1
Mijn IQ is tot een absoluut diepte punt gezakt, maar alles werkt nu, bedankt... Schaam schaam schaam
Vandingenen
vandingenen
18 jaar geleden
 
0 +1 -0 -1
Ik blijf steeds met hetzelfde probleem zitten. Ik heb een map fotoalbum met daarin een map test. In de map test zitten 2 foto's .jpeg.

De directory thumbs maakt hij aan, maar daarin niets.

Wat is het probleem?

Alvast bedankt
Yori Hak
Yori Hak
18 jaar geleden
 
0 +1 -0 -1
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
Vincent Huisman
Vincent Huisman
18 jaar geleden
 
0 +1 -0 -1
ik krijg dit:

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 12288 bytes) in ../testalbum/album.php on line 71

ik heb er niks aan veranderd
PvdDikkenberg
PvdDikkenberg
18 jaar geleden
 
0 +1 -0 -1
Dag Arjan
Ik heb jouw voorbeeld bovenaan bekeken. Mooi man.
Zoek ik ook, maar dan met de afbeeldingsnaam ook in of boven of onder of links de foto zien verschijnen.
Of zit dat al in een nieuwere versie verborgen?
Ik heb absoluut geen verstand van php taal.
Piet
Arjan Kapteijn
Arjan Kapteijn
18 jaar geleden
 
0 +1 -0 -1
Watermerk bedoel je?
PvdDikkenberg
PvdDikkenberg
18 jaar geleden
 
0 +1 -0 -1
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
Lars
lars
18 jaar geleden
 
0 +1 -0 -1
zou het niet mooi zijn als je lightbox erin verwerkt?
PvdDikkenberg
PvdDikkenberg
18 jaar geleden
 
0 +1 -0 -1
Die naam heb ik meer gezien.
Wat is dat voor een ding?
Piet
PvdDikkenberg
PvdDikkenberg
18 jaar geleden
 
0 +1 -0 -1
Even gezocht op het net.
Is het niet helemaal. Ik wil 60 foto's per jaargang als diashow voorbij laten gaan
en met een druk op de foto deze vergroten.
Maar dat lijkt wel het bestuderen waard. Piet
Arjan Kapteijn
Arjan Kapteijn
18 jaar geleden
 
0 +1 -0 -1
@PvdDikkenberg,

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $afbeelding['filename'];
?>


Zou gewoon moeten werken.
Haroun
haroun
18 jaar geleden
 
0 +1 -0 -1
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!
Nick B
Nick B
18 jaar geleden
 
0 +1 -0 -1
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
Jelle -
Jelle -
18 jaar geleden
 
0 +1 -0 -1
Je kunt bovenaan het script dit toevoegen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
  //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.
Arjan jansen
arjan jansen
18 jaar geleden
 
0 +1 -0 -1
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
Nick B
Nick B
18 jaar geleden
 
0 +1 -0 -1
@Smurf

Dat was de oplossing, bedankt !
Selim
Selim
18 jaar geleden
 
0 +1 -0 -1
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
Arjan Kapteijn
Arjan Kapteijn
18 jaar geleden
 
0 +1 -0 -1
Zo te zien is er een afbeelding waarvan de dimensies niet uitgelezen kan worden. Heb je iets van een link?
Gerrit JAn
Gerrit JAn
18 jaar geleden
 
0 +1 -0 -1
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.
Music_ed_29@yahoo.
music_ed_29@yahoo.
18 jaar geleden
 
0 +1 -0 -1
Heb je in het variabelen blok:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$map         = 'fotoalbum';
$afbeeldingen    = array();

...
Veranderd naar?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$map = 'foto';
$afbeeldingen = array();

...
Edit:
vergissing verwijderd.
Arjan Kapteijn
Arjan Kapteijn
18 jaar geleden
 
0 +1 -0 -1
De $map is in dit geval alleen voor de map met afbeeldingen. Heeft -niks- te maken met de ?pagina=fotoalbum...
Music_ed_29@yahoo.
music_ed_29@yahoo.
18 jaar geleden
 
0 +1 -0 -1
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
    <?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&amp;pagina='. $map. '&amp;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&amp;pagina='. $map .'&album='.$album.'">|&nbsp;&nbsp;'.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&amp;pagina='. $map .'&amp;album='.$map.'&amp;paginanr='.($paginanr - 1).'" title="Ga naar pagina '.($paginanr - 1).'">&lt;&lt; Vorige</a>';
        }
else{
            $maincontent .=  '<div id="thumbnav">&lt;&lt; Vorige';
        }


        $maincontent .=  '&nbsp;&nbsp;&nbsp; Pagina '.$paginanr.' van '.ceil($aantalfotos/$perpagina).' &nbsp;&nbsp;&nbsp;';

        if ($paginanr < ceil(($aantalfotos)/$perpagina)) //Vooruit alleen vóór de laatste pagina.
        {
            $maincontent .=  '<a href="?mod=fotoalbum&amp;pagina='. $map .'&amp;album='.$map.'&amp;paginanr='.($paginanr + 1).'" title="Ga naar pagina '.($paginanr + 1).'">Volgende &gt;&gt;</a><br></div>'.PHP_EOL;
        }
else{
            $maincontent .=  'Volgende &gt;&gt;<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)
PHP script in nieuw venster Selecteer het PHP script
1
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'
   });
});

Ik hoop dat ik niets vergeten ben te vermelden. Bij mij werkt het zo.
Music_ed_29@yahoo.
music_ed_29@yahoo.
18 jaar geleden
 
0 +1 -0 -1
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:
Quote:
e $map is in dit geval alleen voor de map met afbeeldingen. Heeft -niks- te maken met de ?pagina=fotoalbum...
Bart Crum
Bart Crum
18 jaar geleden
 
0 +1 -0 -1
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
Guido Piket
Guido Piket
18 jaar geleden
 
0 +1 -0 -1
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?
Jrp
jrp
18 jaar geleden
 
0 +1 -0 -1
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?
John Cena
John Cena
18 jaar geleden
 
0 +1 -0 -1
Boys

http://rwanda.chilion.nl/foto/

Ik krijg zo weinig tevoorschijn ;)

Hulp wordt zeer op prijs gesteld :)

Chilion
Sven Dekker
Sven Dekker
17 jaar geleden
 
0 +1 -0 -1
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 ;)
Patrick Stel
Patrick Stel
17 jaar geleden
 
0 +1 -0 -1
Ik zie aan de datums dat dit niet meer actief is maar toch zie ik ook graag een antwoord op de vraag van jrp

groeten patrick
Chris J
Chris J
16 jaar geleden
 
0 +1 -0 -1
zo te zien is het onderwerp idd niet meer zo acctief.
maar ik zou graag een andwoord zien op de vraag van:
Bart Crum, ik wil namelijk het zelfde hebben laat iets weten als iemand het weet :)
Jeroen van Belle
Jeroen van Belle
16 jaar geleden
 
0 +1 -0 -1
Voor het sorteren van mappen op datum, zet je de volgende code op regel 171:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
usort($mappen, create_function('$b,$a', 'return filectime($a) - filectime($b);'));
Chris J
Chris J
16 jaar geleden
 
0 +1 -0 -1
dat is niet echt een andwoord die ik graag had gezien maar toch ook handig denk ik
Chris winkel
chris winkel
16 jaar geleden
 
0 +1 -0 -1
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
Milo S
Milo S
16 jaar geleden
 
0 +1 -0 -1
Voor vragen eigenlijk naar het forum maar vooruit.
Weet je zeker dat de afbeeldingen in de goede map zitten?
Chris winkel
chris winkel
16 jaar geleden
 
0 +1 -0 -1
foto.php staat in de root van de webserver, daar heb ik een mapje album gemaakt met als submap ratjes
Marco van den Haak
Marco van den Haak
16 jaar geleden
 
0 +1 -0 -1
Hallo Chris J probeer deze is

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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&amp;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&amp;album=' . $map . '&amp;afbeelding=' . $vorige_afbeelding['basename'] . '' title='Ga naar foto ' . $vorige_afbeelding['basename'] . ''>&lt;&lt; Vorige</a>';
    }

    else {
      echo '&lt;&lt; Vorige';
    }

    echo '&nbsp;&nbsp;&nbsp; Foto ' . ($fotonr + 1) . ' van ' . $aantalfotos . ' &nbsp;&nbsp;&nbsp;';
    if ($fotonr < $aantalfotos - 1) {
      $volgende_afbeelding = pathinfo($afbeeldingen[$fotonr + 1]);
      echo '<a href='?pagina=fotoalbum&amp;album=' . $map . '&amp;afbeelding=' . $volgende_afbeelding['basename'] . '' title='Ga naar foto ' . $volgende_afbeelding['basename'] . ''>Volgende &gt;&gt;</a><br>';
    }

    else {
      echo 'Volgende &gt;&gt;<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&amp;album=' . $map . '&amp;paginanr=' . ($paginanr - 1) . '' title='Ga naar pagina ' . ($paginanr - 1) . ''>&lt;&lt; Vorige</a>';
    }

    else {
      echo '&lt;&lt; Vorige';
    }

    echo '&nbsp;&nbsp;&nbsp; Pagina ' . $paginanr . ' van ' . ceil($aantalfotos / $perpagina) . ' &nbsp;&nbsp;&nbsp;';
    if ($paginanr < ceil(($aantalfotos) / $perpagina)) {
      echo '<a href='?pagina=fotoalbum&amp;album=' . $map . '&amp;paginanr=' . ($paginanr + 1) . '' title='Ga naar pagina ' . ($paginanr + 1) . ''>Volgende &gt;&gt;</a><br>';
    }

    else {
      echo 'Volgende &gt;&gt;<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&amp;album=' . $map . '&amp;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&amp;album=' . $map . '&amp;afbeelding=' . $afbeelding['basename'] . ''><img src='' . $afbeelding['dirname'] . '/thumbs/klein_' . $afbeelding['basename'] . '' title='' . $afbeelding['basename'] . '' alt='' . $afbeelding['basename'] . '' class='thumbs'></a>' . PHP_EOL;
    }
  }
}

?>
Gor Grigorian
Gor Grigorian
15 jaar geleden
 
0 +1 -0 -1
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.
Niels K
Niels K
15 jaar geleden
 
0 +1 -0 -1
Beste Gor Grigorian,

Graag een nieuwe topic aanmaken in het daarvoor bestelde bestemde forum onderdeel.

Mvg,

Niels

Edit, dankje vincent ;-)
Vincent Huisman
Vincent Huisman
15 jaar geleden
 
bestellen we hier op phphulp ook al fora? :)
Gor Grigorian
Gor Grigorian
15 jaar geleden
 
0 +1 -0 -1
@Niels Kieviet
Sorry had niet door dat ik verkeerd zat.
Gr Gor Grigorian
Gor Grigorian
Gor Grigorian
15 jaar geleden
 
0 +1 -0 -1
Hallo Arjen,
Ik heb je script op mijn website gebruikt en het werkt nu top. Ik vroeg mij alleen af of het mogelijk was om te wijzigen hoeveel foto's(of thumbnails) er getoond worden. Op dit moment is het 4*3, dus of het mogelijk is om het 5*4 te maken.
Gr. Gor Grigorian
D B
D B
12 jaar geleden
 
0 +1 -0 -1
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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&amp;album='.$map.'&amp;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&amp;album='.$map.'&amp;afbeelding='.$afbeelding['basename'].'"><img src="'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a></div>';
    }
    }
}

?>
D B
D B
12 jaar geleden
 
0 +1 -0 -1
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?
Ellen tolhuisen
ellen tolhuisen
12 jaar geleden
 
0 +1 -0 -1
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
Wouter J
Wouter J
12 jaar geleden
 
0 +1 -0 -1
Hallo ellen, voor vragen over hoe je php moet gebruiken kun je beter even een forum post aanmaken in het "beginnen met php" onderdeel.
Gus Ditz
Gus Ditz
5 jaar geleden
 
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
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- Ariën  -
- Ariën -
5 jaar geleden
 
0 +1 -0 -1
Het is ook geen kant-en-klaar script. Je moet het wel zelf vormgeven, net als de meeste scripts die je kan downloaden.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. automatisch-fotoalbum-v3

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.