2012-03-14 53 views
3

我有一個功能,使飛行中的url圖像的縮略圖! 我總是通過類型jpg傳遞給這個函數圖像,但是當我傳遞一個帶有「.jpg」擴展名的圖像時,問題就出現了。但是當我試圖讓其MIME類型,我發現這是「應用程序/八位字節流」 ..在這個php page,此MIME類型是指如何處理圖像的MIME類型「application/octet-stream」?

IMAGETYPE_JPC,IMAGETYPE_JPX之一,IMAGETYPE_JB2

我需要修改我的函數來處理這個MIME類型?

通知^^^^^^

function thumb($path,$width,$height) // $path => image url 
{ 
     $file_dimensions = getimagesize($path); 
     $file_type = image_type_to_mime_type($file_dimensions[2]); 
     list($Cwidth, $Cheight) = getimagesize($path); 
     if ($file_type=='image/jpeg'||$file_type=='image/pjpeg'){ 
      // Load 
     $thumb = imagecreatetruecolor($width, $height); 
     $source = imagecreatefromjpeg($path); 
     // Resize 
     imagecopyresized($thumb, $source, 0, 0, 0, 0, $width, $height, $Cwidth, $Cheight); 
     header('Content-Type: image/jpeg'); 
     imagejpeg($thumb); 
     } 
     else if ($file_type=='application/octet-stream') 
     { 
      // ^^^^^ what I should write here 
     } 
     else 
     { 
      echo "Not supported type"; 
     } 
} 

回答

0

我們不能告訴你,因爲application/octet-stream是一種通用型的二進制文件的MIME類型。它可以是一切。您可以使用文件二進制內容imagecreatefromstring進行嘗試。但保持手指交叉;)。

這裏的實際問題是,getimagesize獨立於用於調整圖像大小的GD庫。所以它提供了關於GD本身無法處理的文件的信息。因此,您可以輸出某種「不支持的圖像類型」,直到找到一些能夠處理特定MIME或更好說明圖像類型的附加庫。

看得那麼清楚:

+0

錯誤:「數據沒有被識別的格式」 – user504363 2012-03-14 17:54:52

+0

是的,因爲GD庫不支持打開(,調整大小和輸出)這些格式。或者你得到的mime類型主要是信息性的。您必須使用能夠處理格式的其他圖像庫。 – hakre 2012-03-14 17:56:37

+0

對不起,我不擅長圖像處理..你能告訴我有關'其他圖像庫是能夠處理格式' – user504363 2012-03-14 18:10:19

-2

在應用程序/八位字節流的情況下,你可以得到原來的文件名,並檢查其擴展名。如果它的jpg你應該很好去

+0

誰投降,誰也應該加上他的觀點。這完全爲我工作。 – hellojava 2017-07-21 09:52:03

+2

我會給它投票,我會告訴你爲什麼。有一個PHP的設置,確定最大的職位大小設置,但少於PHP允許在內存中使用的空間總量。 舉例: 'post_max_size ='2m''和'memory_limit =「128M」'會導致圖像通過流傳送,而不是簡單的圖像/ jpeg。這是因爲它在整個圖像上傳之前以大塊形式提供圖像。 – 2017-09-08 04:11:45