我正在开展一个项目,用户可以通过php将个人资料图片上传到服务器。
根据会话ID自动重命名该文件。现在我想将所有上传的图片自动转换为JPG。
我以为我试图将文件扩展名操作为" jpg"虽然它上传,但从未想过它会真正起作用。但似乎它确实如此,文件作为JPG上传到服务器(用Chrome试了)。
这是转换图像的合法方式还是其他浏览器会出现问题?
[...]
if ($uploadOk != 0) {
$filetypetest = "jpg";
$newfilename = $sessionid . '.' .$filetypetest;
move_uploaded_file($_FILES["bild"]["tmp_name"], "uploads/" . $newfilename);
}
答案 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;
}