PHP imagecreate()PNG是否来自任何常用的文件格式?

PHP imagecreate()PNG是否来自任何常用的文件格式?,php,image,forms,imagecreatefrompng,Php,Image,Forms,Imagecreatefrompng,我目前有一个图像上传输入,只接受PNG,JPG/JPEG,GIF图像。 如果该文件有效,它将继续使用从图像创建缩略图 imagecreatefrompng() imagecopy() imagejpg() 这很好,但显然只适用于png图像 除了使用提交的正确文件格式外,使用“imagecreatefrompng()”最合理、最有效的方法是什么?我所能想到的就是if/else使用多个“imagecreatefrom_ux0;()”,但这似乎并不正确 此外,无论提交了什么,我的输出格式如何始终是P

我目前有一个图像上传输入,只接受PNG,JPG/JPEG,GIF图像。 如果该文件有效,它将继续使用从图像创建缩略图

imagecreatefrompng()
imagecopy()
imagejpg()
这很好,但显然只适用于png图像

除了使用提交的正确文件格式外,使用“imagecreatefrompng()”最合理、最有效的方法是什么?我所能想到的就是if/else使用多个“imagecreatefrom_ux0;()”,但这似乎并不正确


此外,无论提交了什么,我的输出格式如何始终是PNG,而不是我现在拥有的当前图像jpg()。

您必须使用一个开关并确定图像类型,如下所示:

    $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;
    }
-编辑-没有看到问题的第二部分,您只需使用imagepng将其保存为PNG即可,无需执行任何其他操作。

使用
$filename))
将是此处的延迟选项


如果您总是想要一个png输出,那么只需交换
imagejpg
即可。

图像一旦被GD加载,就以完全相同的格式存储在内部。只有在加载和保存时,您才必须选择适当的文件类型,并且也可以保存到任何其他文件类型。