За последние 24 часа нас посетили 64857 программистов и 1740 роботов. Сейчас ищут 845 программистов ...

Функция проверки картинки

Тема в разделе "PHP для новичков", создана пользователем MrSullex, 24 фев 2016.

  1. MrSullex

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

    С нами с:
    15 сен 2015
    Сообщения:
    122
    Симпатии:
    1
    Нужна функция, которая проверяет, что задана именно ссылка с картинкой, а не просто ссылка или рандомный текст. И если все же задана ссылка с картинкой, то проверяла, существует ли эта картинка по заданой ссылке. Если нет, то выводит сообщение типа: вы задали не верный url к картинке.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это вообще единственный способ определить, что это на самом деле картинка, а не что-то ещё.

    так, ну и какие мысли? Подскажу про HEAD
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    getimagesize совместно с allow_url_fopen. Правда если вам скормят очень большую картинку, будет тяжко, скорее всего. И видел какой-то трюк, как поломать getimagesize, связанный с его реализацией.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно просто прочесть из стрима несколько байт.
     
  5. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Код (PHP):
    1. Тут могла быть ваша реклама :) 
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ну блин, он должен был сам родить
     
  7. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Не, ну так-то есть одна малюсенькая клёвая штучка, которая читая считанные байты определяет и формат и размер
     
  9. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Код (PHP):
    1. <?php
    2.  
    3. $img = "image.png";
    4.  
    5. switch (exif_imagetype($img)) {
    6.     case 1:
    7.         echo "IMAGETYPE_GIF";
    8.         break;
    9.     case 2:
    10.         echo "IMAGETYPE_JPEG";
    11.         break;
    12.     case 3:
    13.         echo "IMAGETYPE_PNG";
    14.         break;
    15.     case 4:
    16.         echo "IMAGETYPE_SWF";
    17.         break;
    18.     case 5:
    19.         echo "IMAGETYPE_PSD";
    20.         break;
    21.     case 6:
    22.         echo "IMAGETYPE_BMP";
    23.         break;
    24.     case 7:
    25.         echo "IMAGETYPE_TIFF_II (порядок байт intel)";
    26.         break;
    27.     case 8:
    28.         echo "IMAGETYPE_TIFF_MM (порядок байт motorola) ";
    29.         break;
    30.     case 9:
    31.         echo "IMAGETYPE_JPC";
    32.         break;
    33.     case 10:
    34.         echo "IMAGETYPE_JP2";
    35.         break;
    36.     case 11:
    37.         echo "IMAGETYPE_JPX";
    38.         break;
    39.     case 12:
    40.         echo "IMAGETYPE_JB2";
    41.         break;
    42.     case 13:
    43.         echo "IMAGETYPE_SWC";
    44.         break;
    45.     case 14:
    46.         echo "IMAGETYPE_IFF";
    47.         break;
    48.     case 15:
    49.         echo "IMAGETYPE_WBMP";
    50.         break;
    51.     case 16:
    52.         echo "IMAGETYPE_XBM";
    53.         break;
    54.     case 17:
    55.         echo "IMAGETYPE_ICO";
    56.         break;
    57.     default :
    58.         echo "по ссылке не картинка";
    59.         
    60. }
    http://php.net/manual/ru/function.exif-imagetype

    Добавлено спустя 2 минуты 4 секунды:
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вопрос был про картинку на другом сервере, даже не известно, картинку ли, и не хочется скачивать.

    на самом деле вроде как ответ такой: https://github.com/tommoor/fastimage
     
  11. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    igordata, ну пихни туда ссылку на другую картинку, и все будет работать как надо.

    Добавлено спустя 2 минуты 56 секунд:
    если не известно картинку ли передали, выполнится дефолный блок switch
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да, но та штучка, что я дал - она не загружает целиком ответ сервера, а берёт только считанные байты
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    igordata,
    Добавлено спустя 58 секунд:
    ты про это? или я что-то не понимаю.
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    прикольно, спасибо. только это расширение нужно установить, а тому классу ничего не нужно вроде. Но прикольно, я не знал, что он умеет читать по http не целиком.