我目前有图像上传输入,只接受PNG,JPG / JPEG,GIF图像。 如果文件有效,则会继续使用
从图像创建缩略图imagecreatefrompng()
imagecopy()
imagejpg()
这很好,但显然只适用于png图像。
除了使用提交的正确文件格式外,使用“imagecreatefrompng()”最合乎逻辑且最有效的方法是什么?我能想到的是if / else使用多个“imagecreatefrom_ _ ()”但这似乎不对。
另外,无论提交的是什么,我的输出格式如何总是PNG,而不是现在的imagejpg()。
答案 0 :(得分:9)
您必须使用开关并确定图像类型,如下所示:
$extension = strtolower(strrchr($file, '.'));
switch ($extension) {
case '.jpg':
case '.jpeg':
$img = @imagecreatefromjpeg($file);
break;
case '.gif':
$img = @imagecreatefromgif($file);
break;
case '.png':
$img = @imagecreatefrompng($file);
break;
default:
$img = false;
break;
}
-EDIT-没有看到你问题的第二部分,你只需要使用imagepng保存它以将其保存到PNG,无需做任何其他事情。
答案 1 :(得分:7)
使用imagecreatefromstring(
file_get_contents(
$filename))
将是一个懒惰选项。
如果你总是想要一个png输出,那么只需要为imagepng
交换imagejpg
即可。