Intervention image vs Upload.php class, как в первом варианте задать уменьшение качества до определённого веса файла?
Ранее всегда использовал Upload.php class, но он давно не обновляется, наверняка устарел, могли появится уязвимости, по тому решил рассмотреть популярную библиотеку intervention image.
Пока ещё не изучил все возможности её
На примере Upload.php была возможность обработать файл под нужное разрешение и при необходимости автоматически уменьшить качество, если его итоговый размер будет превышать некое заданное значение.
То есть если итоговый размер больше заданного - уменьшает качество до нужного размера, если менее - оставляет как есть.
Есть ли аналогичный метод в intervention image?
С размером тут не угадаешь никогда. Ни одна библиотека не умеет апроксимировать размер без
полного сжатия-пережатия. Но можно уменьшать длину-ширину на какой-то коэффицинтик
например на 1.2 и проверять выполнилось ли условие. И повторить. Таким себе градиентным
спуском.
mayton2019, Upload.php именно меняла качество, сохраняя заданное разрешение, разумеется возможно это был далеко не самый оптимизированный процесс, но работало прекрасно.
Alex Alc, я думал его уже 10 лет как похоронили))) , мы тоже очень тяжело мигрировали с класса аплоада, там жуть, все в одном файле, несколько тысяч строк кода, он и загружает и обрабатывает, и вообще чего там только нет. А так, документация на интервеншон вполне хорошая
если итоговый размер больше заданного - уменьшает качество до нужного размера, если менее - оставляет как есть.
Выглядит как готовый алгоритм для любой библиотеки. То что такая фича не реализована в большинстве библиотек, говорит о том что ее полезность сомнительна для большинства сервисов. Проще взять что-то современное и реализовать самому, там 5 строчек кода в итоге будет.
Ну... если написать простенький алгоритм с множественными преобразованиями изображений то это будет крайне неадекватная нагрузка, если же рассчитывать некий потенциал и заранее вычислять примерное значение необходимого коэффициента сжатия, то тут явно не 5-строчная задача
если же рассчитывать некий потенциал и заранее вычислять примерное значение
нет никаких "заранее вычислять". Каждая картинка жмется по разному. Можно только прикинуть сколько +- жмется какая картинка, то есть создать входные параметры заранее как константы, без пережатия реальный размер сжатой картинки вы не вычислите. Так что только аппроксимацией, а там цикл на 5 строк...