По какой-то причине это происходит только на одном из моих форумов, а не на другом, хотя оба находятся на почти одинаковой версии Discourse.
После последнего обновления при встраивании изображений в сообщения миниатюра в лайтбоксе обрезает края изображения. Из-за этого картинки с текстом становится очень трудно читать.
Мне кажется, что это нежелательное поведение, тем более что здесь, на Meta, такой проблемы нет.
Скорее всего, это связано с их настройками файлов, такими как:
макс. ширина изображения: Максимальная ширина миниатюры изображения в сообщении. Изображения с большей шириной будут изменены в размере и открыты в лайтбоксе.
макс. высота изображения: Максимальная высота миниатюры изображения в сообщении. Изображения с большей высотой будут изменены в размере и открыты в лайтбоксе.
мин. соотношение для обрезки: Соотношение, используемое для обрезки высоких изображений. Введите результат деления ширины на высоту.
Возможно, я прочитал немного слишком быстро.
Появлялось ли изображение корректно до обновления?
Если щёлкнуть правой кнопкой мыши → Открыть изображение в новой вкладке, отобразится ли изображение полностью?
Какие настройки в разделе Настройки → Файлы отличаются от значений по умолчанию?
Я пробовал восстановить резервную копию сайта на новом экземпляре, но это также не решило проблему. Очевидно, что дело в конфигурации, хотя честно говоря, я не знаю в чём именно.
Я проверил сайт, и, похоже, нет никаких пользовательских CSS-стилей или других настроек, влияющих на миниатюры.
Скорее всего, это ошибка в настройках сайта, например:
Но вы сказали:
Кстати, какое значение по умолчанию у вашей настройки «минимальное соотношение для обрезки»?
Возможно, это ошибка в конфигурации CDN? Если вы используете облачный ресайзер изображений для оптимизации изображений (миниатюр). Это маловероятно, но всё же может быть причиной.
Другая возможная причина — плагин, который работает с миниатюрами. Как предложил Саймон, вы также можете попробовать загрузить новые изображения в безопасном режиме, чтобы проверить, не вызвано ли это плагином. (Но, насколько я вижу, вы не используете таких плагинов.) Если я ошибаюсь и вы используете подобный плагин, иногда простого отключения плагина в панели администратора недостаточно. В этом случае нужно закомментировать (удалить) его из файла app.yml и попробовать снова.
Однако обратите внимание: эти миниатюры создаются в указанных размерах и обрезаются в постах. Поэтому, если вы что-то измените, это не повлияет на существующие миниатюры, пока вы не пересоберёте посты или не измените их размеры вручную, чтобы система восприняла их как новые файлы и сгенерировала для них новые миниатюры. При новых загрузках изменения должны отобразиться после перезагрузки страницы.
Заходил на сайт в безопасном режиме, и проблема сохраняется.
Я также попробовал восстановить сайт на другом сервере с установкой Discourse, используя тот же app.yml, и затем пересобрал посты, просто чтобы проверить, изменится ли что-то, но ничего не изменилось.
0.22, и оно точно такое же на другом форуме, которым я управляю, где этой проблемы нет.
Мой CDN — это базовый от Amazon AWS, и он настроен так же, как на другом сайте, где этой проблемы нет.
К сожалению, я не использую никаких плагинов, которые взаимодействовали бы с этим. Возможно, discourse-topic-previews-sidecar?
Я проверил содержимое своего ведра AWS S3, и похоже, что обрезалась оптимизированная версия изображений. Значит, это какой-то баг, возникающий при загрузке изображений.
Небольшое изменение оригинального изображения (чтобы Discourse не распознал его как существующее, хотя я не уверен, что это так, если вы вставляете его из буфера обмена),
Перейдите в безопасный режим, где всё отключено,
Создайте пост,
Вставьте/загрузите изображение,
Проверьте, обрезается ли превью или результат?
Это тот случай, когда все стараются найти проблему, а в итоге все скажут: «Это же было так очевидно», верно?
Отключение, похоже, решило проблему (по крайней мере, для новых изображений).
Есть ли сейчас способ пересоздать все оптимизированные версии, чтобы исправить проблему на всём сайте?
Я вижу, что есть rake-задача uploads:regenerate_missing_optimized, но, насколько я понимаю, она пересоздаст только отсутствующие оптимизированные версии.
К сожалению, повторная сборка поста не сгенерировала оптимизированные версии.
Мне хочется переместить папку optimized/ в моём бакете и выполнить команду rake uploads:regenerate_missing_optimized. Посмотрим, сломаю ли я что-нибудь.
Редактирование: Ах, но эта задача работает только для внутреннего хранилища. Не для S3.
В итоге проблемных изображений оказалось так немного, что я в итоге вручную перезагрузил все их. Так что проблема решена, хотя и не самым эффективным способом.