Скачиваю картинки при помощи imagecreatefromjpeg. Но если картинка gif тогда выдаёт ошибку что это не jpeg файл. Как можно обойти данную проблему? PHP: $photo = "http://www.microsoft.com/hz.gif"; $src = imagecreatefromjpeg($photo);
$src = imagecreatefromjpeg($photo); заменить на $src = imagecreatefromgif($photo); p.s я бы сначала узнал какой формат и если не jpeg то ставить imagecreatefromgif итп
Можно как-то так, хотя и длинно, но работает: PHP: <?php $photo = 'http://77.221.149.117/promoCMS/uploads/thumbs/new2_th.jpg'; $ext = explode('.', $photo); $ext = strtolower($ext[(count($ext) - 1)]); if($ext === 'jpeg') $ext = 'jpg'; switch($ext) { // Получение case 'jpg': $src = imagecreatefromjpeg($photo); break; case 'gif': $src = imagecreatefromgif($photo); break; case 'png': $src = imagecreatefrompng($photo); break; } // Обработка // ... // Вывод switch($ext) { case 'jpg': header('Content-type: image/jpeg'); imagejpeg($src); break; case 'gif': header('Content-type: image/gif'); imagegif($src); break; case 'png': header('Content-type: image/png'); imagepng($src); break; } ?>
sobachnik Подсократил чуток. PHP: <?php $photo = 'http://77.221.149.117/promoCMS/uploads/thumbs/new2_th.jpg'; $ext = (strtolower(substr(strrchr($photo, '.'), 1)) == 'jpg') ? 'jpeg' : strtolower(substr(strrchr($photo, '.'), 1)); $src = (function_exists('imagecreatefrom'.$ext)) ? call_user_func('imagecreatefrom'.$ext, $photo) : null; if ($src) { header('Content-type: image/'.$ext); call_user_func('image'.$ext, $src); } ?>
PHP: <?php $file = 'http://www.php.ru/;-)/logony.gif'; $types = array('jpg' => 'jpeg','jpeg' => 'jpeg','gif' => 'gif','png' => 'png'); $type = $types[pathinfo($file, PATHINFO_EXTENSION)]; $create = 'imagecreatefrom'.$type; $image = 'image'.$type; if(array_key_exists($type, $types)){ header('Content-type: image/'.$type); $image($create($file)); } ?>
Johnatan круто я тоже понимал, что можно короче, но у меня как всегда всё упирается в незнание названий каких-то функций и лень лезть в мануал, когда и так всё работает
А как насчет такого решения: PHP: $photo = file_get_contents("http://www.microsoft.com/hz.gif"); $src = imagecreatefromstring($photo); и далее выполняете необходимые вам действия. Если необходимо узнать исходный формат изображения, то можно воспользоваться функцией exif_imagetype() А вообще, в мануале много чего интересного написано :roll: