PHP映像大小调整不会在Internet Explorer中调整大小

时间:2012-02-13 06:09:39

标签: php internet-explorer image-resizing

我有一个非常有趣的问题。我在下面写的脚本有效,但它在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;
}

1 个答案:

答案 0 :(得分:3)

将我的评论转换为答案:

浏览器与服务器端脚本出错无关,因为它位于客户端。

但是,错误的是,MIME类型是一种不可靠的信息,因为它是检测并发送MIME类型的浏览器。

在处理jpgs或png时,IE有时会发送image/pjpegimage/x-png MIME类型,因此您在验证时也需要检查这些类型。