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;
}
PHPはサーバ側で動作しますが、ブラウザが何であるか分かりません –
ここで少しデバッグする必要があります。画像は本当にサイズ変更されていませんか?ブラウザーに表示される方法の問題かもしれません。いくつかのデバッグ文を入れて、そのコードがすべて期待どおりに実行されているかどうかを確認します。イメージが 'imagecreatefrom *'によって正しくアップロードされ、読み込まれた場合、ブラウザに基づいて違いはありません。 – deceze
しかし、それは事を参照してください。私は同じ画像をクロムにアップロードしてアップロードすることができます。つまり、同じ正確な画像をアップロードすることができます。しかし、1つは450でクロムにリサイズされます。私はファイル自体とブラウザを直接見ています。 –