За последние 24 часа нас посетили 19042 программиста и 1616 роботов. Сейчас ищут 1148 программистов ...

imagecreatefromjpeg

Тема в разделе "PHP для новичков", создана пользователем allowance, 12 янв 2011.

  1. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Скачиваю картинки при помощи imagecreatefromjpeg. Но если картинка gif тогда выдаёт ошибку что это не jpeg файл.
    Как можно обойти данную проблему?

    PHP:
    1. $photo = "http://www.microsoft.com/hz.gif";                                                          
    2. $src = imagecreatefromjpeg($photo);
    3.  
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    $src = imagecreatefromjpeg($photo);
    заменить на
    $src = imagecreatefromgif($photo);

    p.s я бы сначала узнал какой формат и если не jpeg то ставить imagecreatefromgif итп
     
  3. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Можно как-то так, хотя и длинно, но работает:
    PHP:
    1. <?php
    2. $photo = 'http://77.221.149.117/promoCMS/uploads/thumbs/new2_th.jpg';                                                        
    3. $ext = explode('.', $photo);
    4. $ext = strtolower($ext[(count($ext) - 1)]);
    5. if($ext === 'jpeg') $ext = 'jpg';
    6. switch($ext) {
    7. // Получение
    8. case 'jpg':
    9.     $src = imagecreatefromjpeg($photo);
    10.     break;
    11. case 'gif':
    12.     $src = imagecreatefromgif($photo);
    13.     break;
    14. case 'png':
    15.     $src = imagecreatefrompng($photo);
    16.     break;
    17. }
    18. // Обработка
    19. // ...
    20. // Вывод
    21. switch($ext) {
    22. case 'jpg':
    23.     header('Content-type: image/jpeg');
    24.     imagejpeg($src);
    25.     break;
    26. case 'gif':
    27.     header('Content-type: image/gif');
    28.     imagegif($src);
    29.     break;
    30. case 'png':
    31.     header('Content-type: image/png');
    32.     imagepng($src);
    33.     break;
    34. }
    35. ?>
     
  4. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
  5. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    PHP:
    1. <?php
    2. $file   = 'http://www.php.ru/;-)/logony.gif';
    3. $types  = array('jpg' => 'jpeg','jpeg' => 'jpeg','gif' => 'gif','png' => 'png');
    4. $type   = $types[pathinfo($file, PATHINFO_EXTENSION)];
    5. $create = 'imagecreatefrom'.$type;
    6. $image  = 'image'.$type;
    7. if(array_key_exists($type, $types)){
    8.      header('Content-type: image/'.$type);
    9.      $image($create($file));
    10. }
    11. ?>
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Johnatan
    круто :) я тоже понимал, что можно короче, но у меня как всегда всё упирается в незнание названий каких-то функций и лень лезть в мануал, когда и так всё работает :)
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Padaboo
    Афигеть! Даже не предполагал, что так можно...
    PHP:
    1. <?php
    2. $image($create($file));
     
  8. fly21

    fly21 Активный пользователь

    С нами с:
    20 мар 2007
    Сообщения:
    11
    Симпатии:
    0
    А как насчет такого решения:

    PHP:
    1. $photo = file_get_contents("http://www.microsoft.com/hz.gif");
    2. $src = imagecreatefromstring($photo);
    и далее выполняете необходимые вам действия.
    Если необходимо узнать исходный формат изображения, то можно воспользоваться функцией exif_imagetype()

    А вообще, в мануале много чего интересного написано :roll: