在PHP中将JPG / GIF图像转换为PNG?
我有一个PHP表单,允许图像上传和检查以确保图像有效。exif_imagetype();
但是,我希望所有格式,PNG,JPG,JPEG和GIF,一旦提交,最终成为PNG。
我该怎么做?
我有一个PHP表单,允许图像上传和检查以确保图像有效。exif_imagetype();
但是,我希望所有格式,PNG,JPG,JPEG和GIF,一旦提交,最终成为PNG。
我该怎么做?
然后你只需要imagepng()。
事实上,它几乎变成了一句话:
imagepng(imagecreatefromstring(file_get_contents($filename)), "output.png");
您将用于文件名,并且显然使用不同的输出文件名。但是图像格式探测本身会变得多余。$_FILES["id"]["tmp_name"]
根据图像的类型,您可以选择正确的函数来打开文件:
$extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
switch ($extension) {
case 'jpg':
case 'jpeg':
$image = imagecreatefromjpeg($filename);
break;
case 'gif':
$image = imagecreatefromgif($filename);
break;
case 'png':
$image = imagecreatefrompng($filename);
break;
}
然后,您只需使用以下命令保存文件:
imagepng($image, $new_filename, $quality);
值得注意的是,这只会解析实际的扩展名,而不会真正验证,因此文件是特定的格式。例如,您可以拍摄jpg图像,然后将扩展名更改为png。因此,更好的方法是使用将返回图像类型而不依赖于实际的扩展名。exif_imagetype()