【问题标题】:i can't upload png thumbnail only i get uploaded JPG image我无法上传 png 缩略图,只有我上传了 JPG 图片
【发布时间】:2017-11-13 21:26:09
【问题描述】:

我上传图片时遇到问题,我上传时只看到 JPG 缩略图,但未显示 png 缩略图。 如何将图像从任何类型(如 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);

    }

【问题讨论】:

  • 您没有检查扩展程序,您只需使用imagecreatefromjpeg() 进行所有上传。因此,对于非 jpeg 文件,这将失败。
  • @jeroen 我如何添加扩展?
  • 您可以使用imagecreatefromjpeg()imagecreatefrompng()等检查上传的文件类型并进行相应处理。
  • 所以我可以像这样添加 $src = imagecreatefromjpeg($tmp_name); $src = imagecreatefrompng($tmp_name); ?

标签: php image jpeg


【解决方案1】:

正如 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多