За последние 24 часа нас посетили 187827 программистов и 2136 роботов. Сейчас ищет 1871 программист ...

Ограничение допустимого разрешения при ресайзе картинки.

Тема в разделе "PHP для новичков", создана пользователем ridraider, 23 окт 2010.

  1. ridraider

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

    С нами с:
    23 окт 2010
    Сообщения:
    65
    Симпатии:
    0
    Допустим
    для ленты новостей localhost/img.php?img=/img.jpg&width=100
    для превью в файловом менеджере localhost/img.php?img=/img.jpg&width=60

    Но если кто то в цикле будет обращаться к localhost/img.php?img=/img.jpg&width=х подставляя каждый раз новое значение то будут создаваться файлы с левым разрешением.

    Как можно ограничить помимо создания массива допустимых значений?

    Или как вы выводите изображения localhost/img.php?img=/img.jpg&width=х
     
  2. engager

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

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    вообще мне всегда казалось разумным создавать превью один раз при аплоаде изображения на сервак, и хранить отдельно превью и оригинальную картинку.
    но рендерить каждый раз - это точно не разумно.
    есть еще вариант ничего не ресайзить на серваке, а тупо на клиете генерить в теге img аттрибуты width и height (либо чере css-стиль)
     
  3. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    хоть делаю так же как и engager , но знаю что есть проекты в которых необходимо ресайзить на лету ... только вот ниодной цели для этого немогу вспомнить :D
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.132
    Симпатии:
    1.251
    Адрес:
    там-сям
    пришел к такой технологии:
    - набор предопределённых размеров превью
    - сами превьюшки содавать при первом обращении, а не при аплоаде. комбинация RewriteRule *** !-f (или try_files для nginx) и скрипта-ресайзера
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    тоже использую, все с одинаковым именем но разными префиксами - x, s, m, l. Нарезаю при аплоаде
     
  6. ridraider

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

    С нами с:
    23 окт 2010
    Сообщения:
    65
    Симпатии:
    0
    engager для каждого значения параметра высота, ширина картинка генерится 1 раз потом просто возвращает сохраненную картинку.
    Вопрос был в том что кто то запустит скрипт где будет изменять параметр ширина на 1 единицу и будут создаваться левые картинки.


    Вспомнил вопрос, а почему так долго страничка грузится?
    Ответ оказался просто люди вставляли 8метровые изображения и ограничивали WхH атрибутами тега img.
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.132
    Симпатии:
    1.251
    Адрес:
    там-сям
    ridraider, а не надо разрешать произвольные размеры.
     
  8. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    эм , я кажется только вопрос разрулил :D
    if($width>100 and $width<500)
    не покатит ? =)
     
  9. ridraider

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

    С нами с:
    23 окт 2010
    Сообщения:
    65
    Симпатии:
    0
    siiXth
    не)

    Остался на прежнем
    есть массив $allowed, содержит что то типа
    $allowed = array(
    "height" => array(
    "100" => 1,
    "200" => 1,
    "300" => 1
    ),
    "width" => array(
    "100" => 1,
    "200" => 1,
    "300" => 1
    )
    )
    потом просто проверка на isset()