4 votos

Resolución de la pantalla frente a la resolución de la imagen

Tengo una pregunta sobre los píxeles y la resolución de la pantalla de un dispositivo Android.

La aplicación que desarrollé fue en la época en que el Samsung Galaxy S III era nuevo. Las imágenes de mi aplicación tenían una resolución de 2310x1300 (relación 1.777 para ajustarse a la pantalla). El Samsung Galaxy S III tiene una resolución de 1280x720. Elegí una resolución más alta para tener algo de margen para futuros dispositivos con pantallas más grandes y mayores DPI.

Pero eso no es suficiente hoy en día: el Galaxy S6 tiene una resolución de 2560x1440, que es muy superior a la resolución de mis imágenes. Así que pensé que la calidad de las imágenes para un dispositivo de este tipo se deterioraría ya que la resolución de las imágenes es inferior a la resolución de la pantalla. Pero al probar la aplicación para el Galaxy S6 me no puede ver ninguna diferencia ahora mismo - las imágenes escaladas para el nuevo dispositivo (resolución de imagen de 2310x1300 utilizada en un dispositivo con 2560x1440) es al menos tan buena como para un dispositivo más antiguo con menor resolución.

¿He entendido completamente mal cómo funcionan los ppp y la resolución?

Los recursos de imágenes se encuentran bajo el /res/drawable/hdpi carpeta.

0 votos

Googlear podría haber ayudado - desde el sitio hermano superuser.com/questions/441799/

0 votos

¿Puede alguien explicar qué importancia tiene esto para un usuario final? El DIP (no el DPI) y los recursos son algo que a un usuario final no le importaría, a menos que modifique un APK.

2voto

Como se menciona en la respuesta de @w3dk, no se puede ver ninguna diferencia porque no puedes ver ninguna diferencia . Es decir, tus ojos literalmente no pueden diferenciar entre el detalle de la imagen en el Galaxy S3 y en el Galaxy S6, porque en ambos casos, la resolución de la imagen se acerca al límite de resolución del ojo (la mínima separación angular de 2 puntos/objetos distintos desde una determinada distancia de observación para la que se puede discernir que son distintos entre sí). Lo que voy a tratar aquí son algunas de sus preocupaciones como desarrollador.

El S3 era un xhdpi por lo que cualquier aplicación en él utilizará recursos de imagen en el /res/drawable/xhdpi/ carpeta. El S6 es un xxxhdpi dispositivo, por lo que cualquier aplicación en él utilizará los recursos del /res/drawable/xxxhdpi/ por defecto, pero se retrocede a la siguiente resolución más baja si la carpeta requerida no está disponible, utilizando el escalado rápido de la imagen para mostrar las imágenes en la resolución requerida abstracto resolución (dip (píxeles independientes del dispositivo), no píxeles) (los dip son independientes del hardware, los píxeles dependen del hardware).

Tienes razón al suponer que la calidad de la imagen debería haberse deteriorado en condiciones normales, pero tus imágenes son en realidad de bastante alta resolución, y combinando eso con algo de downscaling en el dispositivo para el S6, en realidad obtienes una imagen de calidad similar a la de un S3.

¿Por qué digo que se reduce la escala incluso para el S6 de alta resolución? Muy sencillo. Probablemente no está utilizando toda la pantalla para mostrar la imagen, y probablemente lo que dip La resolución especificada es inferior a 2310x1300 píxeles reales de hardware, por lo que la imagen se reduce.

En contra de lo que se pueda pensar, la reducción de escala a partir de una fuente de alta resolución realmente aumenta la calidad de la imagen, y el aumento de escala a partir de una fuente de baja resolución la disminuye en la pantalla final, dada la misma resolución de la pantalla final y las imágenes de origen similares (excepto en resolución). Aquí es mi fuente sobre el escalado en cuanto a la calidad de la imagen.

Como dijo sucintamente @DanHulme:

"Una imagen que ha sido reducida desde una fuente de alta resolución se verá mejor que una que ha sido aumentada desde una fuente de baja resolución".

0 votos

Un seguimiento de la cita: Suponiendo que tu algoritmo de escalado sea de buena calidad. Hagas lo que hagas, no utilices el vecino más cercano.

0 votos

@JAB Yo prefiero la bicúbica siempre que sea posible.

0 votos

¿Pero no es el Galaxy s3 más bien un dispositivo xhdpi que hdpi? Según el desarrollador Android xhdpi (320 dpi) está más cerca de 306 dpi que hdpi (240 dpi). Y además, cambié la carpeta de mis imágenes de hdpi a xhdpi y ocurrieron dos cosas: 1) las imágenes son un poco más nítidas y 2) las imágenes se cargan más rápido. developer.Android.com/guide/practices/screens_support.html

1voto

w3d Puntos 860

Mostrar una imagen más pequeña de lo que el dispositivo es capaz no va a "deteriorar" la calidad de la imagen, simplemente no va a ser tan buena como lo que el dispositivo es capaz de hacer. La imagen de ejemplo (2310 x 1300) que indicas debería aparecer ciertamente "mejor" en el S6 que en el SIII ya que la imagen es más grande de lo que el SIII puede mostrar por lo que debe ser escalada abajo . El S6 es capaz de mostrar toda la imagen.

El hecho de que no puedas ver la diferencia probablemente se deba simplemente a tu vista. Entre 306ppi (SIII) y 577ppi (S6) y dependiendo del tipo de medio que se consuma, el ser humano medio a distancias de visión medias probablemente no va a ser capaz de notar la diferencia. ¡577ppi se acerca a lo que el ojo humano es capaz de diferenciar (a 4 pulgadas)!

0 votos

Aumentar la escala de una imagen puede reducen la calidad de la misma, haciendo que los bordes afilados se vuelvan borrosos, y a veces con artefactos de muestreo, pero esto sólo es una preocupación para las imágenes "sintéticas" (logotipos, diseños de pantalla), porque las fotos no suelen tener esos bordes afilados de un solo píxel de todos modos.

0 votos

@DanHulme , precisamente lo que señalé en mi respuesta del complemento.

1 votos

@DanHulme Aunque cuando se hace el upscaling en una pantalla muy alta (577) ppi cualquier desenfoque va a ser insignificante y probablemente no discernible para el ojo humano promedio.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X