Изображение в браузере в масштабе 100% имеет пикселизацию, создайте изображение в масштабе 200%, а масштаб половинного размера будет четким.

Как я могу разместить изображение в размере 100% в Интернете и сохранить четкость изображения? Веб-браузер не выполняет выборку моих изображений?

Если я создам изображение в размере 100% (например, шириной 1000 пикселей) и покажу его естественным образом на веб-сайте, изображение будет несколько размытым/пиксельным. Однако, если я создам одно и то же изображение с масштабом 200% (шириной 2000 пикселей) и покажу с масштабом 50%, изображение получится четким. Конечным результатом являются оба изображения шириной 1000 пикселей, но одно изображение размыто, а другое резко. Мы экспериментировали с разрешением и dpi, и результаты остались прежними.

Мне нужно, чтобы изображение было на 100% шириной 1000 пикселей.

Это изображение создано на 100% и просматривается в браузере на 100%введите описание изображения здесь

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

Я не могу воспроизвести проблему. Изображения обычно отображаются в исходном размере в браузере, если ваша система не увеличивает его. Проверьте системный зум. Некоторые системы с дисплеями с высоким разрешением по умолчанию настроены на масштабирование.
На всех компьютерах и в браузерах он кажется пиксельным. Браузеры работают на 100%. CSS также не задействован. Я также пробовал несколько форматов файлов и настроек, и ничего не меняет результаты.
Попробуйте указать ширину и высоту в теге img: <img src="sharp.png" height="1000" width="1000"> и убедитесь, что размер изображения составляет 72 пикселя/дюйм.
Я отредактировал сообщение, чтобы объяснить, что происходит.
Я думаю, вы видите его пиксельным, потому что диагональные линии ЯВЛЯЮТСЯ пикселизированными на пиксельных дисплеях. Они всегда были. Сглаживание (легкое размытие/затенение) устраняет большую часть неровностей. Когда буквы растеризованы с разрешением 72 ppi, они не имеют идеально гладких линий. Ваш метод использования более высокого разрешения и отображения в меньшем размере эффективен и работает во многих ситуациях. Механизм отображения использует более высокое разрешение для лучшего сглаживания букв. Кроме того, он позволяет увеличить масштаб до появления неровностей.
Я не могу сказать, что когда-либо видел это ... если вы не сохраняете изображение с разрешением около 72 пикселей на дюйм и используете монитор с сетчаткой или 4K. В этом случае сам дисплей увеличивает изображение, что приводит к потере качества. При сохранении 200 % дисплей меньше масштабируется, чтобы соответствовать плотности пикселей, что приводит к более качественному внешнему виду. Вот почему все экраны с высокой плотностью пикселей (retina/4k/5k) требуют загрузки изображений @2x или (at)3x, если вы хотите получить хорошее качество на этих дисплеях.
похоже, он реагирует одинаково на всех мониторах, во всех браузерах, со всеми настройками. Единственное, что работает, это увеличение ширины и уменьшение масштаба с помощью css.
Верхнее изображение, кажется, было увеличено. Системное масштабирование виновато вдвойне. Я не могу воспроизвести эту проблему и не могу быть уверен, что вы сделали. Не зная вашего рабочего процесса, я не знаю, чем могу вам помочь. Можете ли вы поделиться исходным изображением (не захватом из браузера) шириной 1000.
Еще одна вещь, нижнее изображение выглядит идеально для меня на 100%. Так что это происходит не на всех компьютерах. На моем точно нет, а у меня дисплей 4К.
это экраны Retina?
@ DA01 да, но я пробовал и на обычных мониторах, и на сетчатке.
Что ж, проблема имеет смысл, если мы говорим об экранах Retina. Изображение размером 100 пикселей на экране сетчатки с шириной 100 виртуальных пикселей на самом деле будет иметь ширину 200+ реальных пикселей — это означает, что браузеру придется интерполировать отсутствующие пиксели, что вызывает размытие. Но использование изображения шириной 200 пикселей со 100 виртуальными пикселями на самом деле будет использовать все 200 реальных пикселей на экране сетчатки — отсюда и более четкое изображение. Я не могу объяснить это, если мы не говорим об экранах Retina.
Это правильный ответ. Большое спасибо!
@ DA01 Хотите опубликовать это как ответ? Или я?
@driverpizza конечно, я опубликую один!

Ответы (3)

Судя по комментариям, проблема в том, что вы просматриваете их на экране сетчатки.

Экраны Retina от Apple отделили фактические пиксели экрана от размеров изображения в пикселях.

До экранов Retina изображение, загруженное в веб-браузере размером 100 x 100 пикселей, занимало ровно 100 x 100 пикселей экрана.

У экранов Retina (это просто термин Apple для экранов со сверхвысоким разрешением) была проблема: если бы они отображали изображения и текст в «фактическом размере пикселя», все было бы слишком маленьким, чтобы его можно было прочитать. Таким образом, экраны Retina пытаются отображать контент того же размера, что и экраны без Retina, но используют для этого больше пикселей.

Итак, для простой математики предположим, что экран Retina в два раза превышает разрешение стандартного экрана.

Если вы создадите изображение размером 100x100 и просмотрите его на обычном экране, оно будет выглядеть четким, поскольку каждый пиксель изображения использует один экранный пиксель.

Однако на экране Retina это изображение 100x100 будет занимать 200x200 пикселей экрана. Браузер переводит 100 виртуальных пикселей в 200 реальных пикселей. Для этого он должен компенсировать все недостающие пиксели с помощью интерполяции, которая вызывает размытие, которое вы видите.

Исправление (в этом примере) заключается в том, чтобы сделать ваши изображения размером 200x200 пикселей, а затем изменить их размер в HTML или коде для отображения в размере 100x100 пикселей.

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

У меня та же проблема, и я обнаружил, что причина в том, что я установил масштаб дисплея на 125%.

В Windows 10 над «Разрешением экрана» есть раскрывающийся список «Изменить размер текста, приложений и других элементов». Если я установлю его на 125%, png отлично выглядит в средстве просмотра фотографий, но выглядит размытым в браузере, даже если png НЕ масштабируется в html.

Если я верну масштаб отображения на 100%, тот же png будет хорошо выглядеть в том же html-документе в браузере.

Вы можете применить правило CSS, которое делает 100% изображения еще более четкими при изменении размера. Например, если у вас есть изображение с естественной шириной 1000 пикселей, и оно изменено до 800 пикселей, браузер может отображать изображение с небольшим эффектом размытия/сглаживания.

CSS

.sharpen {
    image-rendering: -moz-crisp-edges;
    image-rendering: -o-crisp-edges;
    image-rendering: -webkit-optimize-contrast;
    -ms-interpolation-mode: nearest-neighbor;
}

В этом примере кода я взял ваше 100% изображение и изменил его размер с помощью нового правила CSS: https://codepen.io/doppl3r/pen/YLdQxx?editors=1100 .

Текст на правильном изображении должен выглядеть четче. Чтобы доказать это, измените max-widthfrom 400pxна150px

Я знаю, что код может исправить это, но если я предоставляю это изображение клиенту, это не вариант. Меня больше смущает, почему изображение в размере 100% не отображает высокое качество.