Как избежать любого вида повторного сжатия изображений?

Мы — форум для фотографов.

Мы хотим ограничить размер загружаемых изображений 1,2 МБ, но при этом избежать любого повторного сжатия, если изображение соответствует этому лимиту.

Мы предпочли бы, чтобы, если изображение больше, пользователю выдавалось предупреждение, и загрузка не позволялась.
Однако я не смог найти, как это реализовать.

Когда кто-то загружает изображение, которое немного тяжелее лимита, система агрессивно меняет его размер и повторно сжимает, и пользователи жалуются, что форум испортил их фото (потеря деталей, градации цвета и т. д.).

С добавлением опций композитинга изображений (недавно) ситуация ухудшилась. Даже изображения весом менее 1,2 МБ подвергаются повторному сжатию.

Мы хотим избежать любого вмешательства в изображение пользователя (это его ответственность — настроить изображение по своему вкусу с учётом ограничений по весу и размеру).
По крайней мере, для изображений, которые соответствуют установленным ограничениям.

Как лучше всего настроить параметры для получения такого поведения?

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

Форум имеет тенденцию сжимать их слишком сильно, в результате получаются файлы размером 200 КБ и шириной 900 пикселей.

Думаю, вам понадобится плагин для переопределения этих действий.

Или загрузить файлы в другое место и добавить ссылку.

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

В качестве примеров посмотрите: Azure Blob Storage Plugin и Video Upload to YouTube and Vimeo using Theme Component. Вам нужно будет решить, где размещать изображения, и написать аналогичный компонент темы.

ммм… мы хотим хранить изображения на нашем сервере, так как не можем контролировать другие сайты, где изображения могут быть утеряны.

Я предположил, что мы не сможем полностью отключить обработку изображений.

Нас устраивает, если система не трогает изображения, соответствующие ограничениям (1,2 МБ по размеру файла и 2048 пикселей по большей стороне), и если мы сможем немного настроить повторное сжатие для изображений, превышающих эти лимиты.

Я думаю, мне удалось достичь первой цели: я установил ограничение размера файла в 1230 КБ и порог в Image Composer на то же значение в байтах.

Теперь кажется, что изображения меньшего размера не подвергаются повторному сжатию (как это работало несколько версий назад; похоже, Image Composer был добавлен недавно).

Но при загрузке изображения, например, 2100 пикселей и 3 МБ, возникают странные результаты.
Оно уменьшается до примерно 900 пикселей и 200 КБ, а иногда до 1024 пикселей и 500 КБ…
Изображение полностью теряет детализацию и цветокоррекцию.

Я настроил ограничения Image Composer на 1920 пикселей и качество сжатия JPEG на 90, поэтому ожидал, что оно будет пережиматься до этих параметров (я тестировал с изображениями, которые легко укладываются в лимит 1,2 МБ при качестве 90 и размере 1920 пикселей).
Но система продолжает сжимать их слишком сильно.

Редактировали ли вы настройки сайта, касающиеся максимального размера изображения, ширины и высоты? Это должно быть вашим первым шагом.

Извините за задержку. Я не заметил ваш ответ.

Да, как я уже объяснял ранее, мы установили лимит в 1,2 МБ и ограничение разрешения в 4 МП.

Когда изображение не соответствует этим ограничениям, система сильно его сжимает, иногда с плачевными результатами: ширина изображения, загруженного с разрешением 1920 или 2048 пикселей, становится всего 600 или 1000 пикселей.

Потеря качества очевидна для опытного глаза: исчезают текстуры, появляются ореолы, ухудшается цветокоррекция…

После недавних обновлений даже изображения, соответствующие лимитам, подвергаются системному «улучшению» и сжимаются с потерей качества.

Мы настроили параметр «Повторное сжатие исходного JPG» и установили значение 100%, надеясь предотвратить повторное сжатие. Похоже, это работает, но я не уверен, что повторное сжатие полностью исключено (хотя видимой потери качества нет).

Вам нужно настроить параметр composer media optimization image bytes optimization threshold, чтобы отключить оптимизацию размера изображений на стороне клиента для файлов меньше этого размера. По умолчанию это применяется к изображениям размером более 500 КБ, поэтому вам нужно увеличить значение этого параметра до 1,2 МБ.

Стоит ли улучшить описание этих настроек сайта, чтобы стало понятнее, как всё работает? :thinking:

Думаю, да, но написание текстов — не моя сильная сторона.

Сейчас это

Минимальный размер файла изображения для запуска оптимизации на стороне клиента

Может быть

Минимальный размер файла изображения для запуска изменения размера / сжатия перед загрузкой

?

Возможно

Изображения большего размера будут изменены и сжаты клиентом