2014-04-01 48 views
0

我嘗試調整圖像的大小並保存圖像,當圖像大於420(寬度和高度)時,圖像應該縮小,但顯示爲黑色。這裏有2個函數borrar_imagenes和subir_imagen。可能是什麼問題呢??爲什麼圖像保存爲黑色?使用PHP調整圖像大小的錯誤 - 圖像顯示爲黑色

<?php 


function borrar_imagenes($ruta,$extension){ 


    switch($extension){ 

     case ".jpg": 
      if(file_exists($ruta.".png")) 
       unlink($ruta.".png"); 
      if(file_exists($ruta."gif")) 
       unlink($ruta.".gif"); 
      break; 
     case ".gif": 
      if(file_exists($ruta.".png")) 
       unlink($ruta.".png"); 
      if(file_exists($ruta."jpg")) 
       unlink($ruta.".jpg"); 
      break; 
     case ".png": 
      if(file_exists($ruta.".jpg")) 
       unlink($ruta.".jpg"); 
      if(file_exists($ruta."gif")) 
       unlink($ruta.".gif"); 
      break; 

    } 


} 

function subir_imagen($tipo,$imagen,$email) 
{ 
    if(strstr($tipo,"image")) 
    { 

     if(strstr($tipo,"jpeg")){ 

      $extension = ".jpg"; 
     }else if(strstr($tipo,"gif")){ 
      $extension = ".gif"; 
     }else if(strstr($tipo,"png")){ 
      $extension = ".png"; 
     } 
     $ancho_real = 420; 
     $alto_real = 420; 

     $tamaño_imagen = getimagesize($imagen); 
     $ancho_imagen = $tamaño_imagen[0]; 
     $alto_imagen = $tamaño_imagen[1]; 

; 


     if($ancho_imagen > $ancho_real || $alto_imagen > $alto_real){ 



      $imagen_reajustada = imagecreatetruecolor($ancho_real,$alto_real); 



      switch($extension){ 

       case ".jpg": 
        $imagen_final = imagecreatefromjpeg($imagen); 
        $nombre_img="../img/fotos/".$email; 
        $nombre_img_ext="../img/fotos/".$email.$extension; 
        imagecopyresampled($imagen_reajustada,$imagen_final,0,0,0,0,$nuevo_ancho,$nuevo_alto,$ancho_imagen,$alto_imagen); 

        imagejpeg($imagen_reajustada,$nombre_img_ext,100); 
        borrar_imagenes($nombre_img,".jpg"); 

        break; 

       case ".gif": 
        $imagen_final = imagecreatefromgif($imagen); 
        $nombre_img="../img/fotos/".$email; 
        $nombre_img_ext="../img/fotos/".$email.$extension; 
        imagecopyresampled($imagen_reajustada,$imagen_final,0,0,0,0,$nuevo_ancho,$nuevo_alto,$ancho_imagen,$alto_imagen); 

        imagegif($imagen_reajustada,$nombre_img_ext,100); 
        borrar_imagenes($nombre_img,".gif"); 

        break; 

       case ".png": 
        $imagen_final = imagecreatefrompng($imagen); 
        $nombre_img="../img/fotos/".$email; 
        $nombre_img_ext="../img/fotos/".$email.$extension; 
        imagecopyresampled($imagen_reajustada,$imagen_final,0,0,0,0,$nuevo_ancho,$nuevo_alto,$ancho_imagen,$alto_imagen); 

        imagepng($imagen_reajustada,$nombre_img_ext); 
        borrar_imagenes($nombre_img,".png"); 

        break; 
      }//switch 





     }else{ 
      $destino = "../img/fotos/".$email.$extension; 
      move_uploaded_file($imagen,$destino) or die("No se pudo subir la imagen al servidor"); 
      borrar_imagenes("../img/fotos/".$email,$extension); 
     } 

     $imagen = $email.$extension; 
     return $imagen; 

    }else{ 
     return false; 
    } 


} 

?> 
+0

你的錯誤處理絕對爲零,並且簡單地假定所有的GD調用都成功了。這不是一個好主意。 –

回答

0

圖像通常以黑色保存 - 即紅,綠,藍爲每個像素的0,0,0值 - 當原始圖像已經導入失敗。檢查文件位置。