PHP imagecreate () PNG из любого обычно используемого формата файла? - PullRequest
1 голос
/ 05 декабря 2011

У меня есть вход для загрузки изображений, который принимает только изображения в формате PNG, JPG / JPEG, GIF. Если файл действителен, он затем создает миниатюру из изображения, используя

imagecreatefrompng()
imagecopy()
imagejpg()

Это прекрасно работает, но, очевидно, ТОЛЬКО для изображений PNG.

Какой самый логичный и эффективный способ использовать функцию «imagecreatefrompng ()», кроме использования правильного формата файла, который был представлен? Все, о чем я могу думать, это если / использовать несколько «imagecreatefrom_ _ ()», но это не так.

Кроме того, как мой выводимый формат всегда может быть PNG, независимо от того, что было отправлено вместо текущего imagejpg (), который у меня есть сейчас.

Ответы [ 2 ]

9 голосов
/ 05 декабря 2011

Вам нужно будет использовать переключатель и определить тип изображения следующим образом:

    $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, больше ничего не нужно делать.

7 голосов
/ 05 декабря 2011

Использование imagecreatefromstring( file_get_contents( $filename)) будет ленивым вариантом здесь.

И если вы всегда хотите вывод png, тогда просто поменяйте imagejpg на imagepng.

...