Thumbnails maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joakim Broden

Joakim Broden

21/12/2011 19:24:21
Quote Anchor link
Ik heb een probleem, ik heb een class die maakt van een afbeelding een thumbnail en zet ze als een random string in een map cache en die thumbnail word dan getoond op de website. Dit werk allemaal aardig en goed. Alleen de snelheid van het maken van de thumbnails gaat er langzaam. Als ik namelijk 15 thumnails op 1 pagina heb moet ik wel 15 seconden wachten tot de pagina getoond word.

Zo is de opbouw een beetje:
thumb::init();
thumb::setConfig('size', array(200, 126));
thumb::setConfig('method', 'crop');
thumb::setConfig('image', 'url_van_het_plaatje.jpeg');
thumb::setThumb();

en dan <img src="images/thumbs/url_van_het_plaatje.jpeg"/>

Dit is de code om thumbnails te maken:
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
<?php
            public static function setThumb() {
                if (self::getFile()) {
                    self::setResize();
                    
                    self::setCrop();
                    
                    self::$thumb = imagecreatetruecolor(self::$config['size'][0], self::$config['size'][1]);
                    
                    if (isset(self::$config['bgcolor'])) {
                        imagefill(self::$thumb, 0, 0, imagecolorallocate(self::$thumb, self::$config['bgcolor'][0], self::$config['bgcolor'][1], self::$config['bgcolor'][2]));
                    }

                    
                    self::$thumbNail = md5(self::$config['image']).self::$extention;
                    
                    switch(self::$extention) {
                        case
'.png':
                            $image = @imagecreatefrompng(FOLDER_UPLOADS.'/'.self::$config['image']);
                            imagealphablending($overlay, true);
                            imagesavealpha($overlay, true);
                    
                            imagecopyresampled(self::$thumb, $image, self::$imageSize['marginLeft'], self::$imageSize['marginTop'], 0, 0, self::$imageSize['newWidth'], self::$imageSize['newHeight'], self::$imageSize['width'], self::$imageSize['height']);
                            
                            imagepng(self::$thumb, FOLDER_CACHE.'/'.self::$thumbNail);
                            break;
                        case
'.gif':
                            $image = @imagecreatefromgif(FOLDER_UPLOADS.'/'.self::$config['image']);
                            
                            imagecopyresampled(self::$thumb, $image, self::$imageSize['marginLeft'], self::$imageSize['marginTop'], 0, 0, self::$imageSize['newWidth'], self::$imageSize['newHeight'], self::$imageSize['width'], self::$imageSize['height']);
                            
                            imagegif(self::$thumb, FOLDER_CACHE.'/'.self::$thumbNail);
                            break;
                        default:

                            $image = @imagecreatefromjpeg(FOLDER_UPLOADS.'/'.self::$config['image']);
                            
                            imagecopyresampled(self::$thumb, $image, self::$imageSize['marginLeft'], self::$imageSize['marginTop'], 0, 0, self::$imageSize['newWidth'], self::$imageSize['newHeight'], self::$imageSize['width'], self::$imageSize['height']);
                            
                            imagejpeg(self::$thumb, FOLDER_CACHE.'/'.self::$thumbNail);
                            break;
                    }

                    
                    imagedestroy(self::$thumb);
                    imagedestroy($image);
                }
            }

?>


heeft iemand enig idee hoe ik kan zorgen dat thumbnails maken sneller kan? Liefste niet met <img src="thumb.php?file=url_van_het_plaatje.jpeg" />, maar als het niet anders kan moet dat maar.
 
PHP hulp

PHP hulp

02/03/2025 18:34:14
 
- Ariën  -
Beheerder

- Ariën -

21/12/2011 19:39:16
Quote Anchor link
Een thumbnail genereren kan nou eenmaal wat tijd kosten. het ligt eraan hoeveel geheugen er beschikbaar is.
 
Jens erd

Jens erd

21/12/2011 19:42:38
Quote Anchor link
Ik denk dat je beter van te voren de thumbnails kunt genereren, dan belast je de gebruiker er niet mee. Je zou ook kunnen cachen, maar dat is in principe het zelfde maar dan lastiger (toch?).
 
Pim -

Pim -

21/12/2011 20:51:09
Quote Anchor link
Afhankelijk van hoe je je thumbs gebruikt is idd een van die twee opties de beste. Een cache is helemaal niet zo moeilijk.
De eenvoudigste optie is denk ik om alle requests door te sturen naar een PHP script dat kijkt of er al een thumb bestaat. Als dat niet het geval is wordt de thumb aangemaakt. Tot slot geeft het script een redirect naar de afbeelding.
 



Overzicht Reageren

 
 

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.