我有一个非常有趣的问题。我在下面写的脚本有效,但它在Internet Explorer中不起作用。 MAX_WIDTH变量设置为450,它仍然使用图像的原始尺寸上传图像,而不是转换因子为450。有什么建议?它可以在Chrome,Firefox和Safari中运行并调整大小。此外,我正在测试的IE版本是IE 8 64位版本。感谢。
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;
}
答案 0 :(得分:3)
将我的评论转换为答案:
浏览器与服务器端脚本出错无关,因为它位于客户端。
但是,错误的是,MIME类型是一种不可靠的信息,因为它是检测并发送MIME类型的浏览器。
在处理jpgs或png时,IE有时会发送image/pjpeg
或image/x-png
MIME类型,因此您在验证时也需要检查这些类型。