BizzyLizzy
Technical User
Hi All
I am trying to resize an image (create a thumbnail) and then upload it. Now the uploading part works fine but when I add in the code for resizing it, all I get is a blank page saying http 500 internal server error. I have error reporting switched on but still not getting anything. Could somebody please have a look at my code and see if they can spot where I have gone wrong.
I have a feeling that the code is breaking somewhere in the createthumbnail function but I am blowed if I can figure this out.
Here's hoping somebody out there will be able to help.
Cheers
Lizzy
I am trying to resize an image (create a thumbnail) and then upload it. Now the uploading part works fine but when I add in the code for resizing it, all I get is a blank page saying http 500 internal server error. I have error reporting switched on but still not getting anything. Could somebody please have a look at my code and see if they can spot where I have gone wrong.
Code:
function uploadImage($inputName, $uploadDir) {
$image = $_FILES[$inputName];
$imagePath = '';
//$inputName = uniqid("whc").".jpg";
if (trim($image['tmp_name']) != '') {
// get the image extension
$ext = substr(strrchr($image['name'], "."), 1);
// generate a random new file name to avoid name conflict
$imagePath = md5(rand() * time()) . ".$ext";
$size = getimagesize($image['tmp_name']);
if ($size[0] > 75) {
$imagePath = createThumbnail($image['tmp_name'], $uploadDir . $imagePath, 75);
} else {
// move the image to category image directory
// if fail set $imagePath to empty string
if (!move_uploaded_file($image['tmp_name'], $uploadDir . $imagePath)) {
$imagePath = '';
}
}
}
return $imagePath;
}
Create a thumbnail of $srcFile and save it to $destFile.
The thumbnail will be $width pixels.
*/
function createThumbnail($srcFile, $destFile, $width, $quality = 75)
{
$thumbnail = '';
if (file_exists($srcFile) && isset($destFile))
{
$size = getimagesize($srcFile);
$w = number_format($width, 0, ',', '');
$h = number_format(($size[1] / $size[0]) * $width, 0, ',', '');
$thumbnail = copyImage($srcFile, $destFile, $w, $h, $quality);
}
// return the thumbnail file name on sucess or blank on fail
return basename($thumbnail);
}
function copyImage($srcFile, $destFile, $w, $h, $quality = 75)
{
$tmpSrc = pathinfo(strtolower($srcFile));
$tmpDest = pathinfo(strtolower($destFile));
$size = getimagesize($srcFile);
if ($tmpDest['extension'] == "gif" || $tmpDest['extension'] == "jpg")
{
$destFile = substr_replace($destFile, 'jpg', -3);
$dest = imagecreatetruecolor($w, $h);
imageantialias($dest, TRUE);
} elseif ($tmpDest['extension'] == "png") {
$dest = imagecreatetruecolor($w, $h);
imageantialias($dest, TRUE);
} else {
return false;
}
switch($size[2])
{
case 1: //GIF
$src = imagecreatefromgif($srcFile);
break;
case 2: //JPEG
$src = imagecreatefromjpeg($srcFile);
break;
case 3: //PNG
$src = imagecreatefrompng($srcFile);
break;
default:
return false;
break;
}
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
switch($size[2])
{
case 1:
case 2:
imagejpeg($dest,$destFile, $quality);
break;
case 3:
imagepng($dest,$destFile);
}
return $destFile;
}
I have a feeling that the code is breaking somewhere in the createthumbnail function but I am blowed if I can figure this out.
Here's hoping somebody out there will be able to help.
Cheers
Lizzy