Не совсем понимаю, как работает сжатие изображений в Discourse. Объясните, пожалуйста.
Я загрузил изображение размером 2392×884 и весом 214 КБ, и его разрешение осталось без изменений.
Я загрузил изображение размером 3200×1800 и весом 1,7 МБ, и его разрешение уменьшилось до значения настройки composer media optimization image resize dimensions threshold.
При настройке ширины в 1280 пикселей я ожидал, что все изображения будут уменьшены до этой ширины. Однако, похоже, что приоритет устанавливает параметр composer media optimization image bytes optimization threshold.
Мое первое изображение весило менее 524 КБ, поэтому оно не было изменено.
Второе изображение весило более 524 КБ, поэтому оно было изменено.
Если я правильно понял, можно ли настроить уменьшение всех загружаемых файлов до ширины 1280 пикселей?
Так как тема названа очень обобщённо, я не стал создавать новую , но что на практике означает «оптимизация на стороне клиента» — операционная система устройства сама решает, делать ли что-то или нет? Но это приведёт к ситуации, когда гигабайтное изображение должно быть передано клиенту, прежде чем его размер уменьшится до приемлемого масштаба, или я совсем запутался?
Я пробовал это вчера вечером перед публикацией, и это действительно, похоже, ключевой момент.
Вот в чём дело:
composer media optimization image bytes optimization threshold
Настройка 524288 (по умолчанию) = изображение хорошего качества, 1920 пикселей.
Настройка 200000 = изображение низкого качества, так как разрешение падает с 1920 до 1280 пикселей.
Поэтому сегодня утром на своём рабочем столе я взял то же изображение (2392 пикселя), изменил его размер до 1280 пикселей, и оно тоже немного ухудшилось. Так что я не могу обойти это ухудшение. Это результат снижения разрешения с 2392 до 1280 пикселей. Хотя размер изображения уменьшился в четыре раза.
Примечание: Фотографии в формате .HEIC не подчиняются тем же правилам. Фото .HEIC размером 4032 пикселя было уменьшено до 2016 пикселей. Поэтому я не знаю, как именно применялась эта настройка.
В целом, я думаю, что теперь всё понял, после небольшого метода проб и ошибок. Я думаю, что буду использовать настройки по умолчанию, мне действительно нравится дополнительная чёткость фото в 1920 пикселей по сравнению с 1280 пикселями.
Надеюсь, это поможет кому-то ещё.
Редактирование: Я изменил composer media optimization image bytes optimization threshold с значения по умолчанию 524288 на 200000. Я заметил, что загрузка обычного файла .png размером 1220 пикселей и весом 414 КБ привела к размеру файла всего 406 КБ. При снижении указанной настройки до 200000 размер файла уменьшился с 414 КБ до 201 КБ. Разрешение осталось неизменным.
Так что я не знаю, что ещё запускается этой настройкой, но очевидно, что происходит что-то ещё для дальнейшего уменьшения размера изображения.
X → composer media optimization image bytes optimization threshold
Y → composer media optimization image resize dimensions threshold
Z → composer media optimization image resize width target
Боюсь, я, должно быть, глуп, раз не до конца понимаю эту часть, глядя на определения настроек:
composer_media_optimization_image_dimensions_resize_threshold: по умолчанию 1920
Минимальная ширина изображения для запуска изменения размера на стороне клиента.
composer_media_optimization_image_dimensions_resize_target: по умолчанию 1920
Изображения шире composer_media_optimization_image_dimensions_resize_threshold будут изменены до этой ширины.
Должно быть ≥ этого порога.
Именно эта часть:
Должно быть ≥ этого порога.
Разве не должно быть ≤? Не понимаю, зачем изменять размер до большего значения ширины, чем порог
Также в описании той же настройки первое название указано неверно: