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

Aar*_*ron 1 php forms image imagecreatefrompng

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

imagecreatefrompng()
imagecopy()
imagejpg()
Run Code Online (Sandbox Code Playgroud)

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

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

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

jVa*_*ron 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;
    }
Run Code Online (Sandbox Code Playgroud)

-EDIT-没有看到你问题的第二部分,你只需要使用imagepng保存它以将其保存到PNG,无需做任何其他事情.


mar*_*rio 7

使用将是这里的懒惰选项.imagecreatefromstring( file_get_contents( $filename))

如果你总是希望PNG格式的输出,那么就交换imagejpgimagepng会怎么做.