Я использую дисплей HiDPI с коэффициентом масштабирования 150%. Каждый раз, когда я делаю скриншот и вставляю его в Discourse, всё оказывается слишком крупным. Мне приходится вручную применять коэффициент масштабирования к изображению, чтобы оно выглядело нормально.
Предположим, я сделал скриншот следующего блока размером 110x110 пикселей.
В идеале я бы хотел получать изображение правильного размера без необходимости запоминать правильный процент для уменьшения масштаба (в моём случае это 66%).
Да, это будет ложным срабатыванием, если вы вставите изображение, которое не является скриншотом. Интересно, что вставляется чаще: скриншоты или другие изображения.
Не уверен, думаю, это зависит от пользователя и типа фотографий, которые вы публикуете. Иногда я копирую изображение на телефоне и вставляю его на компьютере, так что такой сценарий тоже возможен.
В любом случае, начиная с варианта 2, мы избежим ложных срабатываний; это просто предоставит более удобный размер по умолчанию для предпросмотра.
Похоже, что инструменты для создания скриншотов кодируют некоторую информацию о DPI в файлы PNG. Например, если я загружу скриншот из моей среды macOS с высоким разрешением на https://www.metadata2go.com/, я увижу:
Если я отключу HiDPI, то эти поля метаданных, похоже, исчезнут из файла.
Вы наблюдаете что-то подобное на Windows, @gerhard? Если да, то, возможно, есть способ прочитать это в JS и сделать предположение о плотности пикселей.
Также я наткнулся на этот gist, который может быть полезен.
Код из этого gist возвращает false для скриншота, созданного мной в системе Linux с коэффициентом масштабирования 150%. Блок pHYs этого изображения выглядит так: