3

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

imagecreatefrompng()
imagecopy()
imagejpg()

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

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

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

4

2 回答 2

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;
    }

-编辑- 没有看到您问题的第二部分,您只需要使用 imagepng 将其保存为 PNG,无需执行任何其他操作。

于 2011-12-05T17:56:30.153 回答
8

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

如果你总是想要一个 png 输出,那么只需要交换imagejpgimagepng可以了。

于 2011-12-05T17:58:19.383 回答