[php] plaatje uploaden: not a valid Image resource

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • seef
  • Registratie: April 2000
  • Laatst online: 25-11-2024

seef

Duizend

Topicstarter
Ik ben bezig met het maken van een fotopagina, waarbij ik via uploadforms de plaatjes kan uploaden. Thumbnails worden automatisch aangemaakt, maar dit werkt niet altijd.

Als ik een jpg gebruik die uit een van mn digitale camera's komt (powershot a40 of a70) dan krijg ik de foutmelding:
PHP:
1
Warning: imagecopyresized(): supplied argument is not a valid Image resource in admin_page_fotobewerken.php on line 34


Bij gebruik van andere jpg's werkt het script perfect. Heeft iemand een idee waar dit aan kan liggen? Ik kan me voorstellen dat fotocamera's een hoop extra informatie toevoegen aan een JPEG (EXIF data), maar het lijkt me vreemd dat dit een probleem op zou leveren. Anderzijds weet ik ook niet hoe ik die data kan verwijderen van een jpg. Zoeken heeft me niets opgeleverd.

Originele script (van php.net gehaald), probleem zit hier op regel 34 of op 29 bij maken van thumb:
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
function imageresize($img,$target="",$width,$height,$percent){
   // create an image of the given filetype
   if (strpos($img,".jpg") !== false or strpos($img,".jpeg") !== false) {
       $image = ImageCreateFromJpeg($img);
       $extension = ".jpg";
   } elseif (strpos($img,".png") !== false) {
       $image = ImageCreateFromPng($img);
       $extension = ".png";
   } elseif (strpos($img,".gif") !== false) {
       $image = ImageCreateFromGif($img);
       $extension = ".gif";
   }
   
   $size = getimagesize ($img);
   
   // calculate missing values
   if ($width and !$height) {
       $height = ($size[1] / $size[0]) * $width;
   } elseif (!$width and $height) {
       $width = ($size[0] / $size[1]) * $height;
   } elseif ($percent) {
       $width = $size[0] / 100 * $percent;
       $height = $size[1] / 100 * $percent;
   } elseif (!$width and !$height and !$percent) {
       $width = 100; // here you can enter a standard value for actions where no arguments are given
       $height = ($size[1] / $size[0]) * $width;
   }
   
   $thumb = imagecreatetruecolor ($width, $height);
   
   if (function_exists("imageCopyResampled"))
   {
       if (!@ImageCopyResampled($thumb, $image, 0, 0, 0, 0, $width, $height, $size[0], $size[1])) {
           ImageCopyResized($thumb, $image, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
       }
   } else {
       ImageCopyResized($thumb, $image, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
   }
   
   //ImageCopyResampleBicubic ($thumb, $image, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
   
   if (!$target) {
       $target = "temp".$extension;
   }
   
   $return = true;    

   switch ($extension) {
       case ".jpg": {
           imagejpeg($thumb, $target, 90);
           break;
       }
       case ".gif": {
           imagegif($thumb, $target);
           break;
       }
       case ".png": {
           imagepng($thumb, $target);
           break;
       }
       default: {
           $return = false;
       }
   }
   
   // report the success (or fail) of the action
   return $return;
}

Een heel groot en stoer systeem.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

welke GD versie gebruik je?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 22:33
de powershot a60 van m'n vader geeft .JPG als extensie, die vang je niet af ;) (hoofdletters dus)

Acties:
  • 0 Henk 'm!

  • seef
  • Registratie: April 2000
  • Laatst online: 25-11-2024

seef

Duizend

Topicstarter
phYzar...dat ga je toch niet menen!

Wel dus. Bedankt :)

Een heel groot en stoer systeem.


Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
offtopic:
wat gebeurd er als het geen .jpg, .png of .gif plaatje is?

...

Juist, een warning omdat $extension niet geinitialiseerd is.

Acties:
  • 0 Henk 'm!

Verwijderd

Zoals je zelf al doorhad (en zoals phYzar en stekkel al aangaven) is het de extension. Kijk eens naar de functie strtolower()
PHP:
1
switch (strtolower($extension)) {


[edit]
Ik zie net dat het script iets anders in elkaar zit (vaker gebruik van die value), dus zal de strtolower eerder moeten.

[ Voor 25% gewijzigd door Verwijderd op 05-07-2004 00:56 ]

Pagina: 1