2011-02-17 145 views
0

我從另一個現有的圖像裁剪圖像。它適用於jpg,jpeg,gif正常工作。但它不適用於PNG圖像文件。給出以下錯誤。php imagecreatefrompng()不工作

Warning (2): imagecreatefrompng() [function.imagecreatefrompng]: '/var/www/shareme/app/webroot//documents/users/MTI5NzkyMjQzMmZmLWxvZ28tYmlnLnBuZw.png' is not a valid PNG file [APP/controllers/components/jq_imgcrop.php, line 80] 

這是這段代碼。

function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale){ 
     $newImageWidth = ceil($width * $scale); 
     $newImageHeight = ceil($height * $scale); 

     $ext = strtolower(substr(basename($image), strrpos(basename($image), ".") + 1)); 
     $source = ""; 
     if($ext == "png"){ 
      $source = imagecreatefrompng($image); 
     }elseif($ext == "jpg" || $ext == "jpeg"){ 
      $source = imagecreatefromjpeg($image); 
     }elseif($ext == "gif"){ 
      $source = imagecreatefromgif($image); 
     } 
     $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight); 

     imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height); 
     imagejpeg($newImage,$thumb_image_name,90); 
     chmod($thumb_image_name, 0777); 
     return $thumb_image_name; 
    } 

你對這個問題有什麼想法嗎?

回答

2

也許你還想檢查MIME類型,而不是一個潛在的錯誤擴展。

$handle = finfo_open(FILEINFO_MIME); 
$mime_type = finfo_file($handle, $src); 
$mime_type = mime_content_type($src); 
switch(strtolower($mime_type)) { 
    case 'image/gif': 
     $img = imageCreateFromGIF($src); 
     break; 
    case 'image/png': 
     $img = imageCreateFromPNG($src); 
     break; 
} 
+1

都是一樣的東西。仍然是給出同樣的錯誤。 – gautamlakum 2011-02-17 09:04:49