Скриншоты HiDPI по умолчанию отображаются слишком крупно

У меня MacBook Pro 16". Вот скриншот логотипа Discourse, который я только что сделал.

logo

Это слишком крупно; по умолчанию изображение должно отображаться в размере 50%.

logo

Это можно определить, прочитав метаданные PNG. Например, вот метаданные от ImageMagick:

$ identify -verbose logo.png | head
Image:
  Filename: logo.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 312x90+0+0
  Resolution: 144x144
  Print size: 2.16667x0.625
  Units: PixelsPerInch
  Colorspace: sRGB

Изображения для HiDPI имеют разрешение 144x144.

Discourse должна обнаруживать эту ситуацию и по умолчанию показывать изображение уменьшенным до 50%.

4 лайка

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

К сожалению, это не применимо ко всем случаям: например, скриншоты iOS вообще не содержат Image/Resolution. (iOS 13.6)

3 лайка

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

1 лайк

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

1 лайк

Я думаю, что также можно использовать некоторые эвристики для обнаружения скриншотов iPhone. (PNG-файлы с устройства Apple, имеющие точные размеры экрана iPhone…)

Я это учитывал, но многие скриншоты, которые я публикую здесь, обрезаются либо ради конфиденциальности, либо чтобы сфокусироваться на конкретном элементе.

Я не спорю, что hidpi здесь создаёт неудобства; обычно я просто уменьшаю размеры в markdown вдвое, чтобы решить эту проблему.