[PHP] imagecreatefromjpeg geeft problemen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allen,

Ik heb een probleem met het maken van thumbs ik heb een tijd geleden een class geschreven die thumbs aanmaakt als er een afbeelding wordt geupload. Alles werkt perfect met gif alleen met jpg bij afbeeldingen groter dan 300kb en afbeeldingen met een resolutie van 1600x1200 of hoger krijg ik een pagina die niet geladen kan worden. Ik had ook al zitten denken dat er een limit staat in de php.ini, maar aangezien de host in safe mode draait kan ik hier niks aan veranderen.

Iemand?

Ik heb zitten zoeken en volgens mij ligt het probleem bij imagecreatefromjpeg(); maar wat en waarom, miss. dat iemand van jullie het weet hieronder de 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
<?php 
    class clsImageResize 
    { 
        var $iWidth; 
        var $iheight; 
        var $iNewWidth; 
        var $iNewHeight; 
        var $iMaxWidth=230; 
        var $iMaxHeight=230; 
        var $imagePath; 
        var $iQuality; 

        function clsImageResize($sImagePath,$iQuality) 
        { 
            list($this->iWidth,$this->iHeight) = getimagesize($sImagePath); 
            $this->imagePath = $sImagePath; 
            $this->iQuality = $iQuality; 
            $this->set_size(); 
        } 

        function set_size() 
        { 
            if ($this->iWidth > $this->iMaxWidth || $this->iHeight > $this->iMaxHeight) 
            { 
                $this->iNewWidth = $this->iMaxWidth; 
                $this->iNewHeight = round(($this->iHeight / $this->iWidth) * $this->iMaxHeight); 

            } else { 
                $this->iNewWidth = $this->iWidth; 
                $this->iNewHeight = $this->iHeight; 
            } 
        } 

        function resize_image($newPath,$imageType) 
        { 
            if (is_numeric($this->iNewWidth) && is_numeric($this->iNewHeight)) 
            { 
                $newImage = imagecreatetruecolor($this->iNewWidth, $this->iNewHeight); 

                $type = $this->setExtension($imageType); 
                imagecopyresampled($newImage,$type, 0, 0, 0, 0, $this->iNewWidth, $this->iNewHeight, $this->iWidth, $this->iHeight); 

                imagejpeg($newImage,$newPath,$this->iQuality) or die ("Mogelijk heeft de betreffende map niet de juiste chmod rechten!"); 
            } 
        } 

        function setExtension($imageType) 
        { 
            switch ($imageType) 
            { 
                case "jpg": 
                    $type = imagecreatefromjpeg($this->imagePath); 
                break; 
                case "jpeg": 
                    $type = imagecreatefromjpeg($this->imagePath); 
                break; 
                case "png": 
                    $type = imagecreatefrompng($this->imagePath); 
                break; 
                case "gif": 
                    $type = imagecreatefromgif($this->imagePath); 
                break; 
            } 
            return $type; 
        } 
    } 

?> 


Alvast bedankt,

[ Voor 12% gewijzigd door Verwijderd op 11-04-2006 11:02 ]


Acties:
  • 0 Henk 'm!

  • cannibal
  • Registratie: Maart 2001
  • Laatst online: 21:50
grote kans dat de max. memory voor script usage op iets van 8mb staat, of nog minder.
En aangezien de GDLIB alle plaatjes volledig uitschrijft naar pixels met kleurwaardes (oid) vreet dat geheugen bij de grotere plaatjes.

weinig meer aan te doen dan die 8mb aanpassen, of imagick gebruiken oid.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat dacht ik dus ook, naja heb maar even een mail verstuurd of hij de memory size aan kan passen, hopelijk doet hij dat.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat is überhaupt de foutmelding die je krijgt?

Trouwens, regels 51 t/m 56 kun je korter schrijven.
PHP:
1
2
3
4
                case "jpg": 
                case "jpeg": 
                    $type = imagecreatefromjpeg($this->imagePath); 
                break;

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Mysteryman
  • Registratie: Februari 2001
  • Laatst online: 21-09 11:44

Mysteryman

kan jij wat ik kan...

het kan ook zijn dat PHP aan z'n maximale uitvoer tijd zit... door middel van INI_SET (wat bovenaan je php script moet komen te staan) kan je de default tijd (die staat op 30 sec volgens mij) veranderen naar een ander aantal seconden.

onderstaand voorbeeld geeft weer dat de maximale executie tijd 999 seconden wordt. Ik heb dit probleem namelijk ook gehad :)

PHP:
1
2
3
<?
INI_SET("max_execution_time", "999");
?>

[ Voor 17% gewijzigd door Mysteryman op 11-04-2006 13:32 ]

Everybody happy??? I soon change that here we go...


Acties:
  • 0 Henk 'm!

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

ini_set() werkt niet altijd bij bepaalde ini-variabelen; soms kan je beter je configuratie in de vhost (dat kan zeker) of de .htaccess (kan dat?) dumpen.

Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
GX schreef op dinsdag 11 april 2006 @ 13:49:
ini_set() werkt niet altijd bij bepaalde ini-variabelen; soms kan je beter je configuratie in de vhost (dat kan zeker) of de .htaccess (kan dat?) dumpen.
Hier een lijst met wat je waar kan instellen...
http://nl3.php.net/manual/en/ini.php#ini.list

max_execution_time kan gewoon met ini_set()
Pagina: 1