2017-06-12 64 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