[PHP] Online Upload Probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • JoostMartijn
  • Registratie: December 2003
  • Laatst online: 17-04 15:22
Geachte Mede Tweakers,

Ik heb een script die niet werkt zoals deze moet werken. Hieronder geef ik hem weer daaronder het probleem en wat ik zelf al heb gedaan. Dit stukje code komt uit een php klasse en moet er voor zorgen dat plaatjes kleiner gemaakt worden.


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
function makeTumbNail($breedte = null,$lengte = null){
    $this->getTemp();
    $this->getType();
    
    $imgsize = GetImageSize($this->temp_bestand);
    
    if($breedte == null && $lengte == null){
        $breedte = 100;
        $lengte = 100;
    }
    elseif($breedte == null){
        $procent = ($lengte * 100) / $imgsize[1];
        $breedte = round((($imgsize[0] * $procent) / 100),0) ;
    } elseif ($lengte == null) {
        $procent = ($breedte * 100) / $imgsize[0];
        $lengte = round((($imgsize[1] * $procent) / 100),0) ;
    }
        
    if($this->typeBestand == "image/pjpeg" || $this->typeBestand == "image/jpeg"){
        $this->img = imagecreatefromjpeg($this->temp_bestand);//($this->pad_server);
    } elseif($this->typeBestand == "image/gif"){
        $this->img = imagecreatefromgif($this->temp_bestand);
    } else {
        $this->img = imagecreatefromjpeg($this->temp_bestand);//($this->pad_server);
    }
                
    $destImage = ImageCreateTrueColor($breedte,$lengte) or die("niks gemaakt");
    
    //imagecopyresized($destImage,$this->img,0,0,0,0,$breedte,$lengte,$imgsize[0],$imgsize[1]);
    imagecopyresampled($destImage,$this->img,0,0,0,0,$breedte,$lengte,$imgsize[0],$imgsize[1]) or die("Geen resample");
    
    imagejpeg($destImage,$this->pad_server,100) or die($destImage. "<br>".$this->pad_server. "<br>"."Geen img copy");

}


Dit stukje code maakt van een JPG bestand een kleiner JPG bestand. Opzich loopt dit allemaal soepel alleen met sommige JPG plaatjes niet dan stopt het script zonder enige rede. De plaatjes waarmee het fout gaat hebben dan een grotere resolutie dan 2000px x 2000px. De bestands grote is zo'n 800kb.

In de php.info staande waardes goed:

file_uploads On
upload_max_filesize 2M
max_execution_time 30 ( Gaat mis naar 4 seconde )
post_max_size

Heeft iemand enig idee hoe ik het resolutie probleem kan oplossen.

Windsoft


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Waarschijnlijk loop je tegen de memory_limit aan.

Je zegt dat het script stopt, welke error krijg je? Heb je wel error_reporting aanstaan? Wat heb je verder geprobeerd? :)

offtopic:
http://www.google.nl/search?q=tumbnail
Bedoelde u: thumbnail

[ Voor 18% gewijzigd door Cartman! op 07-05-2009 15:22 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Een 24-bits afbeelding van 2000x2000 is in je geheugen geen 800KB maar 2000 * 2000 * 3 = 12.000.000 bytes = 11,44MB. Niet zo gek dat hij eruit knikkert als je memory limit (zoals Cartman! al aangeeft) te laag staat. :)

'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!

  • JoostMartijn
  • Registratie: December 2003
  • Laatst online: 17-04 15:22
Ik krijg helemaal geen fout melding zelfs niet met:

code:
1
error_reporting(E_ALL);


Het script stopt gewoon. Ik heb via ini_set('memory_limit', '16M'); ook al gekeken of het werkt. Ik had zelf de calculatie ook al gedaan.

Windsoft


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
display_errors() ook aanstaan? Anders kun je instellen wat je wilt maar zie je ze sowieso niet ;)

Check ook even de logs van je webserver...

edit: doe dit:

PHP:
1
2
error_reporting( E_ALL|E_STRICT );
ini_set('display_errors', TRUE);

[ Voor 26% gewijzigd door Cartman! op 07-05-2009 15:52 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

JoostMartijn schreef op donderdag 07 mei 2009 @ 15:36:
Ik krijg helemaal geen fout melding zelfs niet met:

code:
1
error_reporting(E_ALL);


Het script stopt gewoon. Ik heb via ini_set('memory_limit', '16M'); ook al gekeken of het werkt. Ik had zelf de calculatie ook al gedaan.
Vergeet je niet dat je met twee images tegelijk rekent? ;)

'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!

  • JoostMartijn
  • Registratie: December 2003
  • Laatst online: 17-04 15:22
:( 8)7

Bedankt Cartman Inderdaad de errors aan gekregen. Het geheugen raakte inderdaad te vol. Hoe dit over 16mb heen komt snap ik nog niet helemaal maar goed. geheugen naar 64MB gezet en probleem direct gefixt.

Mijn dank is groot _/-\o_

edit: En NMe ook! 2 plaatjes had ik nog niet mee gerekend. :)

[ Voor 11% gewijzigd door JoostMartijn op 07-05-2009 16:01 ]

Windsoft

Pagina: 1