2017-06-12 65 views
0

我有我的上传图片的问题,我上传它只加载看到JPG缩略图,但PNG缩略图不会显示。 如何从任何类型的图像转换为JPG,如PNG,GIF全部为JPG,它可以显示缩略图图像。对不起,我的英语不好。 这里我的代码我不能上传PNG缩略图我上传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); 

    } 
+0

你是不是检查扩展,您只需使用'imagecreatefromjpeg()'为所有上传图片。所以这对于非jpeg文件将会失败。 – jeroen

+0

@ jeroen以及如何添加扩展名? – Sarkis

+0

你检查上传了哪种文件并相应地使用'imagecreatefromjpeg()','imagecreatefrompng()'等等来处理它。 – jeroen

回答

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; 
} 
+0

非常感谢@sjdaws它被解决了。 – Sarkis