ФорумПрограммированиеPHP для идиотов → Ресайз больших фото

Ресайз больших фото

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 19 мая 2016 г. 22:50, спустя 1 минуту 39 секунд

    да, внутреннее представление у GD это что-то вроде простого битмапа, т.е. сжатый JPEG разрастется в памяти. но ты думаешь у IM пределов не будет? не надо позволять шутникам забрасывать бомбы, должен быть лимит и по весу и по размерности.

    @artoodetoo, ну ты цифру то мне скажи, хватит теорий :)

    Спустя 19 сек.

    15мбайт это не картинка, у меня телефон такие делает, ормальный фотоаппарат хуячит еще больше

    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 19 мая 2016 г. 22:51, спустя 1 минуту 2 секунды

    надо попробовать на пiху загрузить аватару из jpeg 100000x100000 пикс.

    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 19 мая 2016 г. 22:53, спустя 1 минуту 8 секунд

    @artoodetoo, попробуй, но там в nginx ограничение на размер картинки стоит.

    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 19 мая 2016 г. 22:53, спустя 32 секунды

    15мбайт это не картинка, у меня телефон такие делает, ормальный фотоаппарат хуячит еще больше

    @phpdude, это не имеет значения. пользователю нельзя позволять ВСЁ. на любом сервисе есть ограничения про картинки.

    Спустя 250 сек.

    про GD ты таки неправильно позиционируешь проблему. он не умножает вес картинки, он просто раскладывает её на "массив пикселей" для простоты обработки. то же самое делает любая графическая библиотека. разница здесь только в том, что GD заключен в песочницу процесса php, а im не будет этим ограничен и сожрёт всю память вместе со свопом ))) только найди подходящий файл.

    • он ещё и уязвим
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 19 мая 2016 г. 23:03, спустя 9 минут 45 секунд

    @artoodetoo, проблема libgd в том что он не умеет в своп в принципе, imagemagick может на крайняк засвопить если не помещается и при это все равно будут результаты, а тут как бы сразу болт и все :)

    вот в чем гавно.

    Спустя 41 сек.

    он ещё и уязвим

    @artoodetoo, учитыая что php в принципе весь решето и пишут на нем зачастую криворукие уебки, то про imagemagick это выглядит просто смешно )))))))

    Сапожник без сапог
  • dummy

    Сообщения: 1 Репутация: N Группа: Кто попало

    Spritz 19 мая 2016 г. 23:38, спустя 34 минуты 51 секунду

    криворукие уёбки написали imagemagic. ImageTragick [imagetragick.com]

  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 19 мая 2016 г. 23:39, спустя 1 минуту 37 секунд

    @dummy, а ты что написал, пряморукий?

    не всё полезно, что в swap полезло
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 19 мая 2016 г. 23:40, спустя 1 минуту 7 секунд

    криворукие уёбки написали imagemagic. https://imagetragick.com/

    @dummy, я думаю те строчки были написаны core php team developer'ом :D

    Спустя 10 сек.

    @dummy, а ты что написал, пряморукий?

    @master, ник :D

    Сапожник без сапог
  • nuklon

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 20 мая 2016 г. 3:12, спустя 3 часа 31 минуту 59 секунд

    Ок, допустим по запросу. А как превьюшки выводить после загрузки? Плакат 10Кх10К показывать с width=100 и height=100?

    pi+
  • nuklon

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 20 мая 2016 г. 3:56, спустя 43 минуты 47 секунд

    2-ой вопрос:
    Например, поставлю предел 5М, время ресайза будет до ~5сек, но есть другая проблема. При мультизагрузке, ресайз идет по очереди, т.е., если добавил 5шт (а если 10шт) одновременно, то 5сек * 5шт = ч/з 25 сек будет ресайзнута 5-ая фотка. Нельзя ли сделать, чтобы они параллельно уменьшались?
    Кстати эта проблема не решается ресайзом по запросу, т.к, там тоже будет ресайз друг за другом.
    .. Вообще хреново.. встрял казалось бы на мелочи(
    Бля на Яндухе, авито и пр. как-то же это работает((

    Спустя 155 сек.

    да шли бы они в жопу с 15мб картинками!

    @artoodetoo, на авито и прочих досках об-ий можно чо угодно грузить, а мне как тыщи лет назад пределы и правила ставить?

    pi+
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 20 мая 2016 г. 5:33, спустя 1 час 36 минут 16 секунд

    Да. Ближайшие 1000 лет ты не сможешь стать вторым авито.
    Судя по вопросам, ты нифига не понял что выше писали.

    ιιlllιlllι унц-унц
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 20 мая 2016 г. 5:41, спустя 8 минут 55 секунд

    Ты пойми, интернет компания всероссийского или сука мирового масштаба и Вася пупкин со своей гостевой книгой используют разные решения. И так будет всегда.

    ιιlllιlllι унц-унц
  • nuklon

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 20 мая 2016 г. 7:48, спустя 2 часа 6 минут 3 секунды

    мирового масштаба и Вася пупкин со своей гостевой

    @artoodetoo, это да.

    Судя по вопросам, ты нифига не понял что выше писали

    @artoodetoo, во-воу.. как 2 последних вопроса касаются того, что ресайз будет отложенным?

    Вопросы в силе.
    На счет "по запросу" я понял, у меня скрипт имеется на этот случай, ну бля, не хотел его использовать, думал че-то другое есть.
    Типа вот так получаю размеры на лету

    <img src="preview.php?path=img/photo.jpg?w=100&h=100">
    Соответственно в preview.php происходит ресайз или берется из кэша, если есть.
    Но почему-то эта запись preview.php?path= попадает в поисковики как ссылка (как динамическая страница).
    К тому же обращение к этому файлу - это всегда дополнительная проверка на существование картинки в кэше и только потом вывод
    pi+
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 20 мая 2016 г. 9:10, спустя 1 час 21 минуту 59 секунд

    ок, потрачу еще 10 минут жизни на тебя.

    Ок, допустим по запросу. А как превьюшки выводить после загрузки? Плакат 10Кх10К показывать с width=100 и height=100?

    нет же ))) формируй ссылку на настоящую превьюшку как если бы она существовала. ты ведь знаешь по какому адресу она будет!
    и не принципиально будет там в урле ".php?хуйнане" или нет. всем наплевать. главное чтобы адрес не менялся со временем.

    2-ой вопрос:
    Например, поставлю предел 5М, время ресайза будет до ~5сек, но есть другая проблема. При мультизагрузке, ресайз идет по очереди, т.е., если добавил 5шт (а если 10шт) одновременно, то 5сек * 5шт = ч/з 25 сек будет ресайзнута 5-ая фотка. Нельзя ли сделать, чтобы они параллельно уменьшались?

    сказано тебе: делать превью по запросу. веб-страничка заставляет браузер делать отдельные запросы про каждую картинку.
    в процессе обработки аплоад ты сохранил оригиналы, вывел что там положено в итоге: страницу "молодец, загрузка завершена" или какой-то ответ ajax с признаком успеха — it's up to you, как говорится. и на этом пока всё. ВСЁ БЛИН. никаких очередей.

    когда посетитель (этот или другой - пофиг) откроет страничку (ту, что ты только что сделал в ответ на аплоад или другую — пофиг), на которой будут теги IMG с адресом твоих превьюшек, вот тогда браузер (!!!) пошлет НОВЫЙ запрос(-ы) с урлом(-ами) картинки(-ок). и в ответ на этот запрос твой скрипт должен подсуетиться и сделать вид, что картинка уже есть.

    в этом тебе помогает вебсервер. не найдя готовую картинку по запросу веб-сервер обращается к скрипту делания этой картинки. а при следующем обращении к этому же урлу картинка будет найдена либо в кеше вебсервера, либо на диске — скрипт её туда сохранит.

    Сейчас понял?

    p.s. можешь считать, что картинки создаются параллельно, если браузер создаст несколько параллельных запросов и твой пул php воркеров ещё не исчерпан, они будут какбы параллельно делаться.
    но чудес не бывает. если проц один и слабый, первый раз картинка отдастся с задержкой.

    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

Пожалуйста, авторизуйтесь, чтобы написать комментарий!