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

时间:2011-12-05 17:53:41

标签: php image forms imagecreatefrompng

我目前有图像上传输入,只接受PNG,JPG / JPEG,GIF图像。 如果文件有效,则会继续使用

从图像创建缩略图
imagecreatefrompng()
imagecopy()
imagejpg()

这很好,但显然只适用于png图像。

除了使用提交的正确文件格式外,使用“imagecreatefrompng()”最合乎逻辑且最有效的方法是什么?我能想到的是if / else使用多个“imagecreatefrom_ _ ()”但这似乎不对。

另外,无论提交的是什么,我的输出格式如何总是PNG,而不是现在的imagejpg()。

2 个答案:

答案 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即可。