image upload script not working with png

Posted on 16th Feb 2014 by admin

The basic process of this php code is to take the submitted file, convert it to a small JPG thumbnail and put it into one directory and save the original file into another, but it seems that when using PNG images it doesn't quite work, any ideas?

Code: if((($_FILES['file']['type'] == "image/gif")
|| ($_FILES['file']['type'] == "image/jpeg")
|| ($FILES['file']['type'] == "image/pjpeg"))
&& ($_FILES['file']['size'] < 2000000000))
{
if($_FILES['file']['error'] > 0)
{
echo '<script language="javascript" type="text/javascript">window.top.window.upload_error(' . $_FILES['file']['error'] . ');</script>';
}
else
{


$fileName = $_FILES['file']['name'];
$f_ext = "." . strtolower(substr(strrchr($fileName, '.'), 1));
$time = time();
$f_noext = $time.substr(microtime(),2,3);
$f_name = $time.substr(microtime(),2,3) . $f_ext;

if(file_exists("img/" . $f_name))
{
echo $_FILES['file']['name'] . " already exists.";
}
else
{

move_uploaded_file($_FILES['file']['tmp_name'], "img/" . $f_name);



$image_path = "img/" . $f_name;

$fsize = getimagesize($image_path);
$max_d = ($orig_p==0)? 250 : 125;
$img = null;

$ext = strtolower(end(explode('.', $image_path)));

if($ext == 'jpg' || $exit == 'jpeg')
{
$img = @imagecreatefromjpeg($image_path);
}
else if($ext == 'png')
{
$img = @imagecreatefrompng($image_path);
}
else if ($ext == 'gif')
{
$img = @imagecreatefrompng($image_path);
}

if($img)
{

$w = imagesx($img);
$h = imagesy($img);

$width = imagesx($img);
$height = imagesy($img);
$scale = min($max_d/$width, $max_d/$height);

if($scale < 1){
$new_width = floor($scale *$width);
$new_height = floor($scale*$height);

$tmp_img = imagecreatetruecolor($new_width, $new_height);

imagecopyresized($tmp_img, $img, 0,0,0,0,$new_width,$new_height,$width,$height);
imagedestroy($img);

$img = $tmp_img;


ImageJPEG($img, 'thumb/' . $f_noext . 't.jpg',60);
imagedestroy($tmp_img);
echo '<script language="javascript" type="text/javascript">window.top.window.stopUpload();</script>';

}

}
}
}
}

Other forums