За последние 24 часа нас посетили 20386 программистов и 1643 робота. Сейчас ищут 1402 программиста ...

Подскажите по возможным проверкам картинки

Тема в разделе "Обработка изображений средствами PHP", создана пользователем A.B.C., 20 июл 2010.

  1. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    Подскажите по возможным проблемам картинки. Правильно ли я делаю?

    1. Проверка на тип файла - явная по расширению, если не jpeg, png, gif - вышел

    2. Проверка на тип файла - функцией
    , если не jpeg, png, gif - вышел

    3. Размер файла - свыше 3 000 000 байт (3-х мегов) - вышел

    4. Против метакода внутри картинки, вроде как помогает ресайз - он будет.

    И еще вопрос, изучая тему сталкиваюсь везде что кодируют имя файла-картинки хранящейся в на сервере, вопрос такой если мне удобно сделать так:

    Название_дата_время_пользователь . JPG

    Зачем кодировать? Как по ней можно выйти на БД? Что не так?
     
  2. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Та не парся. Проверяешь без ошибок ли загружен файл, потом getimagesize выдает тебе формат. Затем сравнивай форматы в нижнем регистре (а то .JPG не пройдет твою проверку). Манипуляции с размером. Создаешь новую, в нее пихаешь эту (ну или как там тебе удобей), сохраняешь в рандомным именем. Тот же md5 + случ. строка или своя функция рандомного названия. И все, сохранил адрес.
     
  3. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    Зачем сохранять с рандомным именем? Мне удобней по алфавиту, но названиям деталей...зашифрую я название, даже пусть оно нормальное будет в БД лежать, мне надо чтоб в папке на серваке их визуально картинки было удобно смотреть.

    и вот еще хотел спросить про форматы в нижнем регистре JPG? что это?
     
  4. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    A.B.C.
    ну вот тебе удобнее чтоб имя носило какуюто смысловую нагрузку - именуй так. Мне наоборот, чтоб название просто не повторялось и было примерно таким "da8fs93jhfslkjfs". Это не столь важно.

    мелочь обычная if($format == strtolower('GIF')). Просто если грузишь картинку, например в фотоапарата, там почти всегда расширение файла написано верхним регистром, и если ты сравниваешь как if($format == 'gif'), то картинка any.GIF - уже не пройдет твою проверку.
     
  5. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    Апельсин, спасибо. :)
     
  6. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Главное проверяй размер картинки в пикселях на высоту и ширину. А то могут тебе загрузить GIF одноцветный 60000 х 200, размер будет не большой, зато когда GD её попытается ресайзнуть, у сервера случится приступ паники от того объёма оперативки, которое потребуется :)
    В общем нужно ограничивать максимальные стороны картинки, особенно если работаешь с GD, который не самый шустрый и эффективный.
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    Psih начал хорошо, кончил плохо. По сравнению с ImageMagic GD очень шустрый. Гугль и тесты вам в руки!

    А размер, да, надо проверять, т.к. внутреннее представление картинки при обработке (хоть в GD, хоть где) это непожатый битмап. такой гифчик был бы просто бомбой :)
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    60000 х 200 х 3 байта на цвет = 36 000 000

    =)