Изображения с высоким соотношением сторон не соблюдают заданный вручную размер в посте (в предпросмотре редактора размер отображается корректно, при отправке поста размер сначала верный, но затем меняется на ширину экрана)
За годы у нас было несколько тем про высокие изображения (с большим соотношением высоты к ширине). Насколько мне известно, стандартное поведение именно такое, с которым вы столкнулись. Существует настройка сайта, позволяющая изменить это:
Так и должно быть, если изображение вставлено без ручного изменения размера.
Моя проблема в том, что я не хочу, чтобы изображение отображалось в своём размере по умолчанию (с большей высотой, чем шириной), а должно быть подогнано под введённые вручную параметры (обратите внимание, что для обоих изображений размер установлен как 50x50, но учитывается только один из них).
Я всё ещё считаю это ошибкой, поскольку изображение было вставлено не с автоматическим размером, заданным системой (и затем скорректированным в соответствии с настройками сайта), а система на самом деле не учла размер, который был намеренно указан вручную.
Я понял, что вы имели в виду: я сказал, что это стандартное поведение, насколько я понимаю.
Другими словами, вы не вручную обрезали размер для сохранённого поста. Я не думаю, что это возможно, но кто-то из команды может это подтвердить.
Посмотрите следующий пост, где объясняется, как обрабатывается изменение размера, и вы увидите, что установка обоих параметров — высоты и ширины — не сработает, если они не соответствуют фактическим размерам:
С уважением, считаю, что это не так. Возможно, я объяснил это недостаточно ясно, поэтому попробую ещё раз:
Исходное изображение, о котором идёт речь, имеет низкое соотношение ширины к высоте в пикселях (это не оспаривается).
Если изображение вставить напрямую в редактор, оно будет масштабировано с автоматической шириной и высотой в Markdown так: , сохранит то же низкое соотношение ширины к высоте и, следовательно, будет отображаться в соответствии с настройкой min ratio to crop.
Однако, если изображение вручную изменить в Markdown как ! [image|50x50](upload://): это новое соотношение ширины к высоте равно 1, и поэтому оно не должно активировать настройку сайта min ratio to crop.
Исходное изображение нельзя обрезать, так как вся содержащаяся в нём информация важна. Желаемый результат — создать небольшой эскиз 50x50, который указывает на оригинал.
Таким образом, корректно переформулированная проблема звучит так:
Настройка сайта min ratio to crop должна учитывать соотношение ширины к высоте, указанное в Markdown, а не физическое соотношение ширины к высоте в пикселях.
@dax, это обсуждение было перемещено из bug в Support. Мне стоит открыть новую тему в bug или отредактировать первое сообщение в этой теме?
Переформулированная проблема выглядит правильно. Но если бы вы прочитали темы, на которые я дал ссылки, то поняли бы, почему она, скорее всего, не вызовет интереса.
Настройка сайта была разработана для того, чтобы предотвратить её переопределение отдельными пользователями, тогда как вы хотите её переопределить. Вместо этого настройку сайта необходимо изменить достаточно, чтобы соотношение сторон изображения стало приемлемым для изменения размера.
Другими словами, изображения, которые слишком вытянуты, по умолчанию не принимаются и должны быть явно разрешены администратором сайта. Отдельные пользователи не могут переопределить это ограничение.
Пожалуйста, проверьте оригинальный пост: первое изображение действительно изменено до 50x50, и способ его обработки вполне корректен и должен работать для любого соотношения сторон (я полагаю, что изображение обрезается по верхнему краю центру с полной шириной, а высота подстраивается под объявленное соотношение сторон, после чего изображение изменяется в размере).
Проблема заключается в том, что для изображения с низким соотношением пикселей по ширине и высоте, но с приемлемым вручную установленным экранным соотношением, глобальная настройка не должна применяться.
Вручную установленное соотношение должно иметь приоритет, так как эта настройка предназначена для предотвращения доминирования изображения на большой части экрана (из-за его высоты), чего явно не происходит при размере 50x50.
Да, я это видел. Но это, казалось, противоречило вашему другому утверждению:
Прочитав это ещё раз, я понял, что вы сказали, что оригинал не должен обрезаться. Насколько мне известно, исходное изображение никогда не обрезается, так что здесь не о чем беспокоиться.
В любом случае, я согласен с вашим общим замечанием/предложением. Указанная причина показа только части изображений — предотвратить доминирование на странице изображений с высоким соотношением высоты к ширине. При установке размеров, например, 50x50, как в вашем примере, это, очевидно, не имеет места. Поэтому нет никаких оснований игнорировать указанные в разметке размеры.
Я не являюсь частью команды Discourse, поэтому лишь пересказываю увиденное.
Было названо более одной причины для текущего значения по умолчанию. Причины, которые я помню, встречавшиеся здесь:
предоставить владельцу сайта контроль над этой функцией
предотвратить доминирование вытянутых изображений из-за чрезмерного использования вертикального пространства
предотвратить превращение вытянутых изображений в горизонтальные полоски или разрывы
обеспечить читаемость превью
discourage необычные неоптимизированные изображения (включая вытянутые), которые иногда возникают из-за непреднамеренного растягивания по одной из осей
Также существует проблема с превью в редакторе, которая создаёт впечатление, будто можно вручную изменить размер отображаемого изображения. Это уже сообщалось ранее, но, по-видимому, не считается приоритетным для исправления:
Думаю, вы упускаете суть. Почему изображение 200x1000, указанное в Markdown как 200x200, должно обрабатываться иначе, чем изображение 200x300, также указанное в Markdown как 200x200?
Я не упускаю суть, поскольку не выступаю ни за, ни против изменения настроек по умолчанию. Я лишь повторяю, что сообщаю о том, что уже существует на форуме. Я не являюсь частью команды Discourse, поэтому не участвую в принятии решений о том, что будет происходить.
Единственное мнение, которое я выразил, заключается в том, что, по моему мнению, маловероятно, что текущие настройки по умолчанию будут изменены. Пять лет читая почти каждую новую тему на этом форуме, я гораздо больше доверяю тому, как команда принимает решения. На данный момент отсутствие обратной связи от команды Discourse говорит само за себя.
Возможно, стоит дать команде немного времени на ответ, так как обсуждение ушло далеко от простого сообщения об ошибке и превратилось в откровенное отклонение от темы.
Этот «чучело» уже избили до смерти, возможно, пора оставить его в покое?
Никто здесь не утверждает, что это значение по умолчанию нужно менять; на самом деле оно вполне разумно в текущем виде:
Мой аргумент заключается в том, что параметр min ratio to crop должен работать только с размерами, указанными в самом посте, а не с размерами физического файла.
Если изображение с низким соотношением ширины к высоте вручную изменено внутри поста, оно, surely, больше не доминирует в обсуждении?
И прежде чем возникнет вопрос, почему это считается ошибкой:
дело в том, что я не могу отформатировать только определённое подмножество изображений, которые бы доминировали в обсуждении, если бы остались без форматирования, создавая тем самым замкнутый круг.
Если вы всё ещё не верите мне, что этот параметр нарушает ожидаемую функциональность, попробуйте изменить размер второй картинки в первом сообщении (OP) до 50% с помощью инструмента масштабирования в редакторе.
Результат: все изображения в посте можно сузить до половины ширины, кроме высоких узких.
Это не ошибка, так как это нормальное и стандартное поведение Discourse. Это известное ограничение, заложенное в дизайн. Кроме того, существует настройка сайта, позволяющая реализовать то, что вы хотите, и это право владельца сайта — снять это ограничение.
Существуют настройки сайта для размеров изображений, расширений файлов и т. д., по которым поступают аналогичные запросы на изменение значений по умолчанию. Это не ошибки, если для изменения настройки достаточно обратиться к владельцу сайта.
Привет, Джефф, спасибо за интерес к этой проблеме.
Я могу заверить вас, что я не (и никогда не буду) менял категорию этой темы после того, как её переместил в другую категорию один из членов команды (обратите внимание, что возврат в категорию «баг» был сделан не мной). Я вполне готов назвать это запросом на новую функцию.
Моя цель при публикации здесь — описать проблему, с которой я сталкиваюсь при обычном использовании программного обеспечения, и получить ответ от команды.
Я никоим образом ничего не требую, даже ответа, но мне хотелось бы хотя бы быть услышанным командой (а не несколько раз подряд отклоняться одним и тем же, несомненно, добросовестным участником этого форума с одним и тем же аргументом, который не полностью решает проблему).
Надеюсь, вы смогли прочитать всю тему и знакомы с проблемой, но для ясности вот краткое резюме:
не все изображения можно установить в желаемый размер с помощью markdown (неожиданное поведение с точки зрения пользователя)
это регулируется параметром «минимальное соотношение для обрезки», который использует соотношение ширины и высоты изображения в пикселях, даже если изображение вручную изменено с помощью markdown до приемлемого соотношения
если это не потребует слишком больших усилий, возможно ли использовать соотношение ширины и высоты, заданное в markdown?
Это решило бы неожиданное поведение масштабирования изображений, как в этом примере (все изображения установлены на 50x50):
Не уверен, насколько сложно будет это изменить, но я тоже хотел бы видеть такую возможность.
Обычно я сталкиваюсь с этим, когда публикую скриншот интерфейса… Когда вы черновик поста, нет никаких указаний на то, что изображение будет обрезано, поэтому я публикую его, вижу обрезанную версию, а затем редактирую пост, чтобы избежать обрезки. Несколько раз я пытался изменить размеры в markdown, но, разумеется, это не сработало… В итоге я возвращаюсь, обрезаю изображение и загружаю его заново.
if crop
cropped_width, cropped_height = ImageSizer.crop(original_width, original_height)
if cropped_width < width
width = cropped_width
img["width"] = width
end
if cropped_height < height
height = cropped_height
img["height"] = height
end
end
по сравнению с текущим вариантом:
Это, безусловно, менее неожиданно, чем текущее поведение, и обрадует @awesomerobot. Единственное, что меня смущает, — тест выглядит очень-очень-очень искусственно.