3

現在、PNG、JPG / JPEG、GIF画像のみを受け入れる画像アップロード入力があります。ファイルが有効な場合は、次を使用して画像からサムネイルを作成します。

imagecreatefrompng()
imagecopy()
imagejpg()

これは問題なく機能しますが、明らかにpng画像の場合のみです。

送信された適切なファイル形式を使用する以外に、「imagecreatefrompng()」を使用する最も論理的で効率的な方法は何ですか?私が考えることができるのは、複数の「imagecreatefrom_ _()」を使用するif / elseだけですが、それは正しくないようです。

また、現在の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;
    }

-編集-質問の2番目の部分が表示されませんでした。画像を使用して保存し、PNGに保存するだけで、他に何もする必要はありません。

于 2011-12-05T17:56:30.153 に答える
8

ここで使用するのは怠惰なオプションです。imagecreatefromstring( file_get_contents( $filename))

また、常にpng出力が必要な場合は、交換imagejpgするだけで十分imagepngです。

于 2011-12-05T17:58:19.383 に答える