Поскольку вопрос, который вы задаете, относится к общему подходу, я поставлю свои два цента.
На ваших подходах:
Вариант 4 - Вы можете использовать некоторые в автономном режимепрограммное обеспечение или внешний сайт для сжатия, но это кажется утомительной работой.Если бы мне нужно было загружать одно изображение в день, я бы, вероятно, выбрал эту опцию.
Вариант 2 - я бы предпочел не делать сжатие при загрузке, поскольку вы потеряете исходное изображение.Сжатие изображений может очень сильно испортить некоторые изображения.
Что касается вариантов 1 и 3 - я думаю, что это зависит от ресурсов вашего сервера, количества изображений, трафика вашего сайта и т. Д. Обычно я предпочитаю сжатие /кэширование по запросу, а не загрузка, но для небольшого сайта это не должно иметь большого значения.
Что касается API - обычно у вас есть два варианта: выполнить работу на своем сервере / сайте или использоватьвнешний сервис.
Когда речь идет о сервисах, мы используем CloudImage , у него очень простой API, и он очень помогает в процессе сжатия (и изменения размера, если вам это нужно).Кроме того, у вас есть преимущества CDN, которые повысят производительность.Поскольку вы используете Pydio, я предполагаю, что вам нужна защита данных и конфиденциальность, поэтому CloudImage может быть хорошим вариантом для вас, поскольку они действительно серьезно относятся к вопросам конфиденциальности.
Если вы предпочитаете делать это самостоятельно, и с учетом этогоВы используете PHP, я бы порекомендовал ImageMagick и библиотеку PHP IMagick .Вы можете контролировать каждый параметр сжатия, и документация довольно хорошая.Единственным недостатком является то, что для достижения наилучшего сжатия без потери качества сначала нужно немного проб и ошибок.
Удачи!