2012-02-13 15 views
0

私は非常に興味深い問題を抱えています。以下に書いたスクリプトは動作しますが、Internet Explorerでは動作しません。 MAX_WIDTH変数は450に設定され、変換係数が何であっても、画像の元のサイズでイメージをアップロードします(450ではなく)。助言がありますか? Chrome、Firefox、Safariで動作し、サイズが変更されます。また、私がテストしているIEのバージョンは、IE 8の64ビット版です。ありがとう。PHPイメージのサイズ変更がInternet Explorerでサイズ変更されない

private function checkForResize() { 
    $fileTypeArray = array('image/gif', 'image/jpeg', 'image/png'); 
    $origType = $this->_uploadType; 
    if (in_array($origType, $fileTypeArray)) { 
     $origImage = $_FILES[$this->_uploadInputField]['tmp_name']; 
     $imageWidth = getimagesize($origImage); 
     if ($imageWidth[0] > MAX_WIDTH) { 
      // Resize here 
      if ($origType == 'image/gif') { 
       $imageSrc = imagecreatefromgif($origImage); 
      } else if ($origType == 'image/jpeg') { 
       $imageSrc = imagecreatefromjpeg($origImage); 
      } else if ($origType == 'image/png') { 
       $imageSrc = imagecreatefrompng($origImage); 
      } else { 
       return false; 
      } 
      $width = $imageWidth[0]; 
      $height = $imageWidth[1]; 
      $newHeight = ($height/$width) * MAX_WIDTH; 
      $tmpImage = imagecreatetruecolor(MAX_WIDTH, $newHeight); 
      $this->setTransparency($tmpImage, $imageSrc); 
      imagecopyresampled($tmpImage, $imageSrc, 0, 0, 0, 0, MAX_WIDTH, $newHeight, $width, $height); 
      imagejpeg($tmpImage, UPLOAD_DIR.DS.$this->_uploadSafeName, 100); 
      imagedestroy($imageSrc); 
      imagedestroy($tmpImage); 
      return true; 
     } 
    } 
    return false; 
} 
+1

PHPはサーバ側で動作しますが、ブラウザが何であるか分かりません –

+0

ここで少しデバッグする必要があります。画像は本当にサイズ変更されていませんか?ブラウザーに表示される方法の問題かもしれません。いくつかのデバッグ文を入れて、そのコードがすべて期待どおりに実行されているかどうかを確認します。イメージが 'imagecreatefrom *'によって正しくアップロードされ、読み込まれた場合、ブラウザに基づいて違いはありません。 – deceze

+0

しかし、それは事を参照してください。私は同じ画像をクロムにアップロードしてアップロードすることができます。つまり、同じ正確な画像をアップロードすることができます。しかし、1つは450でクロムにリサイズされます。私はファイル自体とブラウザを直接見ています。 –

答えて

3

答えに私のコメントを変換する:それは、クライアント側でだとして

ブラウザは、サーバー側のスクリプトが間違っているとは何の関係もありません。

しかし、間違っているのは、MIMEタイプを検出して送信するブラウザにとって、MIMEタイプが信頼性の低い情報であるという事実です。

jpgやpngを扱うときにIEがimage/pjpegまたはimage/x-png MIMEタイプを送信することがあるため、検証時にも確認する必要があります。

関連する問題