La imagen en el navegador al 100 % está pixelada, cree una imagen al 200 % y la escala a la mitad del tamaño es nítida

¿Cómo puedo alojar una imagen al 100% del tamaño en la web y mantener una imagen nítida? ¿El navegador web está muestreando mis imágenes?

Si creo una imagen con un tamaño del 100 % (por ejemplo, 1000 px de ancho) y la muestro de forma natural en un sitio web, la imagen es algo borrosa/pixelada. Sin embargo, si creo la misma imagen al 200 % (2000 px de ancho) y la muestro al 50 %, la imagen es nítida. El resultado final es que ambas imágenes tienen 1000 px de ancho, pero una imagen está borrosa y la otra nítida. Hemos experimentado con resolución y dpi y los resultados siguen siendo los mismos.

Necesito que la imagen tenga un ancho de 1000 px al 100 %.

Esta es la imagen creada al 100% y vista en el navegador al 100%ingrese la descripción de la imagen aquí

Esta es la imagen si la creo al 200% y la veo en el navegador al 50%ingrese la descripción de la imagen aquí

No puedo replicar el problema. Las imágenes generalmente se muestran en su tamaño nativo en un navegador, a menos que su sistema las esté ampliando. Comprueba el zoom de tu sistema. Algunos sistemas con pantallas de alta resolución están configurados para hacer zoom de manera predeterminada.
Parece estar pixelado en todas las computadoras y navegadores. Los navegadores están al 100%. No hay css involucrado tampoco. También probé múltiples formatos de archivo y configuraciones y nada cambia los resultados.
Intente imponer ancho y alto en la etiqueta img: <img src="sharp.png" height="1000" width="1000"> y asegúrese de que su imagen tenga 72 px/in.
He editado la publicación para explicar mejor lo que está sucediendo.
Creo que lo está viendo pixelado porque las líneas diagonales ESTÁN pixeladas en las pantallas de píxeles. Siempre lo han sido. El anti-aliasing (desenfoque/sombreado leve) se ocupa de una gran cantidad de irregularidades. Cuando las formas de las letras se rasterizan a 72 ppp, no tienen líneas perfectamente suaves. Su método de usar una resolución más alta y mostrar en un tamaño más pequeño es efectivo y funciona en muchas situaciones. El motor de visualización utiliza la resolución más alta para realizar un mejor suavizado de las formas de las letras. Además, permite un mayor zoom antes de que aparezcan las irregularidades.
No puedo decir que haya visto esto nunca... a menos que estés guardando la imagen a algo así como 72ppi y estés usando un monitor retina o 4K. En cuyo caso, la propia pantalla está ampliando la imagen, provocando una pérdida de calidad. Guardada al 200%, la pantalla escala menos para igualar su densidad de píxeles, lo que da como resultado una apariencia de mejor calidad. Esta es la razón por la cual las pantallas de alta densidad de píxeles (retina/4k/5k) requieren cargar imágenes @2x o (at)3x si desea una buena calidad en esas pantallas.
parece estar reaccionando igual en todos los monitores, todos los navegadores, todas las configuraciones. Lo único que funciona es aumentar el ancho y reducirlo con css.
La imagen superior parece haber sido mejorada. El zoom del sistema es doblemente culpable. No puedo replicar este problema y no puedo estar seguro de lo que has hecho. Sin conocer su flujo de trabajo, no sé cuánta ayuda puedo brindarle. ¿Puedes compartir la imagen original (no una captura del navegador) con un ancho de 1000?
Solo una cosa más, la imagen de abajo me parece perfecta al 100%. Por lo tanto, no está sucediendo en todas las computadoras. Ciertamente no en el mío, y tengo una pantalla 4K.
¿Son estas pantallas Retina?
@ DA01 sí, pero lo he probado tanto en monitores normales como en retina.
Bueno, el tema tiene sentido si hablamos de pantallas de retina. Una imagen de 100 px en una pantalla retina configurada en 100 píxeles virtuales de ancho en realidad tendrá más de 200 píxeles reales de ancho, lo que significa que el navegador tendrá que interpolar los píxeles faltantes que causan el desenfoque. Pero usar una imagen de 200 px de ancho configurada en 100 píxeles virtuales en realidad usará los 200 píxeles reales en la pantalla retina, de ahí la apariencia más nítida. Sin embargo, no puedo explicarlo si no estamos hablando de pantallas de retina.
Esa es la respuesta correcta. ¡Muchas gracias!
@ DA01 ¿Le gustaría publicar esto como respuesta? ¿O lo haré?
@driverpizza seguro, ¡publicaré uno!

Respuestas (3)

Según los comentarios, parece que el problema es que los está viendo en una pantalla de retina.

Las pantallas retina de Apple han desacoplado los píxeles reales de la pantalla de las dimensiones de píxeles de la imagen.

Antes de las pantallas retina, una imagen cargada en un navegador web de 100 px x 100 px ocupaba exactamente 100 x 100 píxeles de pantalla.

Las pantallas Retina (que es solo el término de Apple para pantallas de súper alta resolución) tenían el problema de que, si mostraban imágenes y texto en "tamaño de píxel real", todo sería demasiado pequeño para ser legible. Como tal, las pantallas de retina intentan representar el contenido al mismo tamaño que las pantallas que no son de retina, pero usan más píxeles para hacerlo.

Entonces, para simplificar las matemáticas, digamos que una pantalla retina tiene el doble de resolución que una pantalla estándar.

Si crea una imagen de 100x100 y la ve en una pantalla normal, se verá nítida ya que cada píxel de la imagen usa un píxel de pantalla.

Sin embargo, en una pantalla retina, esa imagen de 100x100 ocupará 200x200 píxeles de pantalla. El navegador traduce los 100 píxeles virtuales en 200 píxeles reales. Para hacerlo, tiene que compensar todos los píxeles que faltan a través de la interpolación que causa el desenfoque que ves.

La solución (en este ejemplo) es hacer que sus imágenes tengan 200x200 píxeles reales, luego dimensionarlas en su HTML o código para representarlas en 100x100 píxeles.

En una pantalla normal, se verá igual. Los píxeles adicionales simplemente se tiran. Pero en una pantalla de retina, ahora se verá nítido ya que cada píxel de imagen ahora usa un píxel de pantalla.

Tengo el mismo problema y descubrí que la causa es que configuré mi pantalla con una escala del 125%.

En Windows 10, arriba de "Resolución de pantalla", hay un cuadro desplegable para "Cambiar el tamaño del texto, las aplicaciones y otros elementos". Si lo configuro al 125%, el png se ve bien en Photo Viewer, pero se ve borroso en el navegador, incluso el png NO está escalado en html.

Si vuelvo a cambiar la escala de visualización al 100%, el mismo png se verá bien en el mismo documento html en el navegador.

Puede aplicar una regla CSS que hace que el 100% de las imágenes sean aún más nítidas cuando se cambia el tamaño. Por ejemplo, si tiene una imagen con un ancho natural de 1000 píxeles y su tamaño se redimensiona a 800 píxeles, el navegador puede mostrar la imagen con un ligero efecto de desenfoque/anti-aliasing.

CSS

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

En este ejemplo de código, agarré tu imagen al 100 % y la redimensioné con la nueva regla CSS: https://codepen.io/doppl3r/pen/YLdQxx?editors=1100

El texto de la imagen derecha debería aparecer más nítido. Para probar esto, cambie el max-widthde 400pxa150px

Soy consciente de que el código puede solucionar esto, pero si estoy proporcionando esta imagen para un cliente, esa no es una opción. Estoy más confundido por qué una imagen al 100% del tamaño no se muestra de alta calidad.