2014-02-24 5 views
0

есть способ, которым я могу использовать createimagefromjpeg(), чтобы сохранить изображение с URL-адреса, но разрешить все типы файлов изображений?PHP createimagefromjpeg() Как включить все типы изображений

Кажется очевидным, что createimagefromjpeg позволяет только jpeg/jpg.

Вот мой текущий процесс:

// create the image and save it 
    $imagefile = iageURL; 
    $resource = imagecreatefromjpeg($imagefile); 
    // X amount of quality is the last number 
    imagejpeg($resource, "images/covers/imagename.jpeg", 50); 
    imagedestroy($resource); 

Это прекрасно работает, потому что это позволяет мне снизить качество изображения. Но я получаю сообщение об ошибке при попытке использовать что-либо, кроме jpeg/jpg.

Есть ли способ обойти это? Или, возможно, лучший способ сохранения изображений (с уменьшенным качеством) с URL-адреса.

Крейг.

ответ

1

Вы должны проверить тип файла - лучший способ проверить тип пантомимы, если вы можете, то вы можете сделать переключатель и использовать другие функции создания образа в GD Lib, таких как imagecreatefromgif() и imagecreatefrompng() и т.д.:

switch($mime_type) { 
    case 'image/jpeg': 
    case 'image/jpg': 
     $img = imagecreatefromjpeg($filename); 
     break; 
    case 'image/png': 
     $img = imagecreatefrompng($filename); 
     break; 
    case 'image/gif': 
     $img = imagecreatefromgif($filename); 
     break; 
} 

Другой вариант для вас, чтобы захватить данные изображения в в строку и использовать imagecreatefromstring() создать дескриптор изображения из исходных данных:

$filename = 'http://yoursite.com/yourlogo.jpg'; 
$img = imagecreatefromstring(file_get_contents($filename)); 

From the manual:These types will be automatically detected if your build of PHP supports them: JPEG, PNG, GIF, WBMP, and GD2.

+0

Отлично, просто изменив функцию на imagecreatefromtstring(). Благодаря! – Lovelock

Смежные вопросы