imagecreatetruecolor funktion fejler ved genkald
Hej,Jeg har et problem med et script der skal gemme et billede i to forskellige størrelser, derfeter uploade originalen.
Jeg kan godt uploade jpeg, og ikke-animeret ikke-transparente gif filer. fejlen kommer når jeg vil uploade en animeret gif, transparent gif, eller et png.
Fejlen består i at den uploader filen, danner det mindste thumbnail, og så dør ved medium-size billede.
Koden til at generere thumbnail er her;
function createScaledImage($max_x, $max_y, $ext, $uploadsDirectory, $newName, $nameCount, $type){
$uploadedfile = $_FILES['file']['tmp_name'];
$resizedImageName = $uploadsDirectory.$newName."-".$nameCount.$type.".".$ext;
// Take proper action according to extension
switch ($ext) {
case 'jpg':
case 'jpeg': $im = imagecreatefromjpeg ($uploadedfile);
break;
case 'gif': $im = imagecreatefromgif ($uploadedfile);
break;
case 'png': $im = imagecreatefrompng ($uploadedfile);
break;
default: $abort = true;
break;
}
// If extension is accepted, calculate new dimensions
if (!isset($abort)) {
$x = imagesx($im);
$y = imagesy($im);
if ($x > $max_x || $y > $max_y){
if (($max_x/$max_y) < ($x/$y)) {
$save = imagecreatetruecolor($x/($x/$max_x), $y/($x/$max_x));
}
else {
$save = imagecreatetruecolor($x/($y/$max_y), $y/($y/$max_y));
}
}
// Calculate and define transparency
$originaltransparentcolor = imagecolortransparent( $im );
if ($originaltransparentcolor >= 0 && $originaltransparentcolor < imagecolorstotal( $im )) {
$transparentcolor = imagecolorsforindex( $im, $originaltransparentcolor );
/*LINE99*/ $newtransparentcolor = imagecolorallocate($save, $transparentcolor['red'], $transparentcolor['green'], $transparentcolor['blue']);
imagefill( $save, 0, 0, $newtransparentcolor );
imagecolortransparent( $save, $newtransparentcolor );
}
// Create the resized image
imagecopyresized($save, $im, 0, 0, 0, 0, imagesx($save), imagesy($save), $x, $y);
switch ($ext) {
case 'jpg' :
case 'jpeg': imagejpeg($save, $resizedImageName, 100);
break;
case 'gif' : imagegif($save, $resizedImageName);
break;
case 'png' : imagepng($save, $resizedImageName);
break;
}
//Remove the temporary files
imagedestroy($im);
imagedestroy($save);
}
else{
error('Du kan kun uploade billeder af typen jpg, jpeg, gif, png', $uploadForm);
}
}
createScaledImage(175,125, $ext, $uploadsDirectory, $newName, $nameCount, "-tn");
createScaledImage(750,550, $ext, $uploadsDirectory, $newName, $nameCount, "-md");
Efter dette bliver der udført:
------------------------------------------
@move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename)
or error('Utilstrækkelig adgang til upload-destinationen', $uploadForm);
------------------------------------------
@move_uploaded_file bliver udført, eftersom den genererer filnavn-tn.ext og filnavn.ext, og ved jpeg/ikke-animeret ikke-transparent gif, genererer den også filnavn-md.ext.
men ved png, og animeret/transparente gif får jeg denne fejl;
------------------------------------------
Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /customers/notsocrazyhorse.dk/notsocrazyhorse.dk/httpd.www/woco/upload.image.processor.php on line 99
Warning: imagefill(): supplied argument is not a valid Image resource in /customers/notsocrazyhorse.dk/notsocrazyhorse.dk/httpd.www/woco/upload.image.processor.php on line 100
Warning: imagecolortransparent(): supplied argument is not a valid Image resource in /customers/notsocrazyhorse.dk/notsocrazyhorse.dk/httpd.www/woco/upload.image.processor.php on line 101
Warning: imagesx(): supplied argument is not a valid Image resource in /customers/notsocrazyhorse.dk/notsocrazyhorse.dk/httpd.www/woco/upload.image.processor.php on line 105
Warning: imagesy(): supplied argument is not a valid Image resource in /customers/notsocrazyhorse.dk/notsocrazyhorse.dk/httpd.www/woco/upload.image.processor.php on line 105
Warning: imagecopyresized(): supplied argument is not a valid Image resource in /customers/notsocrazyhorse.dk/notsocrazyhorse.dk/httpd.www/woco/upload.image.processor.php on line 105
Warning: imagegif(): supplied argument is not a valid Image resource in /customers/notsocrazyhorse.dk/notsocrazyhorse.dk/httpd.www/woco/upload.image.processor.php on line 110
Warning: imagedestroy(): supplied argument is not a valid Image resource in /customers/notsocrazyhorse.dk/notsocrazyhorse.dk/httpd.www/woco/upload.image.processor.php on line 118
Warning: Cannot modify header information - headers already sent by (output started at /customers/notsocrazyhorse.dk/notsocrazyhorse.dk/httpd.www/woco/upload.image.processor.php:99) in /customers/notsocrazyhorse.dk/notsocrazyhorse.dk/httpd.www/woco/upload.image.processor.php on line 142
------------------------------------------
Hvis jeg fjerner funtionen, og bare eksekverer koden inde i funktionen en enkelt gang, så er der ingen problemer, ligemeget om det er animeret gif eller transparent png.
Linie 99 er mærket i koden med /*LINE99*/
Hvis nogen kan hjælpe vil det virkelig redde mig fra nogle søvnløse nætter ;)