这是通过PHP上传它们时将图像转换为jpg的合法方式吗?

时间:2015-06-10 15:12:32

标签: php file-upload

我正在开展一个项目,用户可以通过php将个人资料图片上传到服务器。

根据会话ID自动重命名该文件。现在我想将所有上传的图片自动转换为JPG。

我以为我试图将文件扩展名操作为" jpg"虽然它上传,但从未想过它会真正起作用。但似乎它确实如此,文件作为JPG上传到服务器(用Chrome试了)。

这是转换图像的合法方式还是其他浏览器会出现问题?

[...]
   if ($uploadOk != 0) {
         $filetypetest = "jpg";
         $newfilename = $sessionid . '.' .$filetypetest;
         move_uploaded_file($_FILES["bild"]["tmp_name"], "uploads/" . $newfilename);
    }

3 个答案:

答案 0 :(得分:1)

更改文件扩展名不会转换它,它仍然是它上传的任何文件类型。浏览器能够在从文件的MIME类型而不是扩展名中获取信息时显示它。

答案 1 :(得分:0)

他们是另一篇与此非常相似的帖子,其中说明了如何转换为jpg:How to convert all images to JPG format in PHP?

答案 2 :(得分:0)

尝试更像这样的事情:

function ConvertToJPG($originalImage, $outputImage, $quality)
{
    // determine if its jpg, png, gif or bmp...

    $exploded = explode('.',$originalImage);
    $ext = $exploded[count($exploded) - 1]; 

    if (preg_match('/jpg|jpeg/i',$ext))
        $imageTmp=imagecreatefromjpeg($originalImage);
    else if (preg_match('/png/i',$ext))
        $imageTmp=imagecreatefrompng($originalImage);
    else if (preg_match('/gif/i',$ext))
        $imageTmp=imagecreatefromgif($originalImage);
    else if (preg_match('/bmp/i',$ext))
        $imageTmp=imagecreatefrombmp($originalImage);
    else
        return 0;

    // quality is a value from 0 (worst) to 100 (best)
    imagejpeg($imageTmp, $outputImage, $quality);
    imagedestroy($imageTmp);

    return 1;
}