我无法上传png缩略图我上传JPG图片

时间:2017-06-12 11:54:32

标签: php image jpeg

我上传图片时遇到问题我上传时只看到JPG缩略图,但png缩略图没有显示。 如何将图像转换为JPG从任何类型,如PNG,GIF全部到JPG,它可以显示缩略图图像。对不起,我的英语不好。 这是我的代码

foreach($_FILES['images']['tmp_name'] as $key => $tmp_name){
    $file_name = $key.$rd.$_FILES['images']['name'][$key];
    $file_tmp =$_FILES['images']['tmp_name'][$key];
    $filePath = "img/zoekertjes/";

    $desired_dir="img/zoekertjes";
    if(empty($errors)==true){

        if(is_dir($desired_dir)==false){
            mkdir("$desired_dir", "img/zoekertjes",true);       
        }
        if(is_dir("$desired_dir/".$file_name)==false){

            $src = imagecreatefromjpeg($tmp_name);

            list($width,$height)=getimagesize($tmp_name);


            $newwidth=($width/$height)*300;
            $newheight=300;
            $tmp=imagecreatetruecolor($newwidth,$newheight);



            imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
            $rd=rand();

            $filename = "img/thumbphotos/".$file_name;
            imagejpeg($tmp,$filename,100);

            imagedestroy($src);

move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
            }else{  // rename the file if another one exist
                $new_dir="$desired_dir/".$file_name.time();
                 rename($file_tmp,$new_dir);                
            }
              $query="INSERT INTO `t_images` (d_image_naam, d_image_images) VALUES ('$_POST[name]', '$file_name')";
         mysqli_query($db,$query);          
        }
        else
        {

     print_r($errors);

    }

1 个答案:

答案 0 :(得分:0)

如jereon所述,您想检查文件类型,然后根据类型读取文件。

这是造成问题的一行:

$src = imagecreatefromjpeg($tmp_name);

如果文件不是image/jpeg,则会失败。你需要检查mime类型然后根据它读取图像。你需要使用这样的东西来阅读mime类型并创建$src图像:

switch (mime_content_type($tmp_name)) {
    case 'image/jpeg':
        $src = imagecreatefromjpeg($tmp_name);
        break;

    case 'image/png':
        $src = imagecreatefrompng($tmp_name);
        break;

    case 'image/gif':
        $src = imagecreatefromgif($tmp_name);
        break;

    default:
        // If mime type is unknown, you can't process it
        throw new Exception('Unknown file type');
        break;
}