2011-01-10 13 views
5

Actualmente estoy desarrollando mi primera aplicación de Android y estoy teniendo algunos problemas para reproducir imágenes. La imagen en sí misma es de gran calidad para empezar, pero al presentarla la calidad disminuye drásticamente. Los bordes se hacen irregulares y se ve mal hecho. Todos los que lo he mostrado hasta ahora lo noté casi de inmediato, sin ninguna sugerencia al respecto. [Inicio a la izquierda, a la derecha final:]Bordes irregulares en las imágenes procesadas en Android

http://i.stack.imgur.com/gld5A.png

Estoy intentando todo lo que soy consciente de todos los consejos y he sido capaz de encontrar por mirar a su alrededor en línea, pero nada parece solucionarlo.

Actualmente, tengo la imagen como un mapa de bits y la escala que:

Bitmap holeImage = BitmapFactory.decodeResource(res, R.drawable.hole_image); 
Bitmap holeImageBMP = Bitmap.createScaledBitmap(holeImage, width, height, true); 

Una vez que tengo la imagen, crear una pintura, establecer los atributos de algunos de suavizado en true, y luego dibujar en el lienzo :

Paint smoothingPaint = new Paint(); 
smoothingPaint.setAntiAlias(true); 
smoothingPaint.setFilterBitmap(true); 
smoothingPaint.setDither(true); 
canvas.drawBitmap(holeImageBMP, 0, 0, smoothingPaint); 

Sin embargo, como puede ver arriba, la calidad de imagen disminuye drásticamente. He visto muchas imágenes renderizadas maravillosamente y sinceramente no estoy seguro de lo que está pasando, ¡así que cualquier consejo sería genial!

Otras notas: Estoy utilizando un método SurfaceView para manejar el dibujo, de naturaleza similar al ejemplo de LunarLander dado en el SDK.

¡Gracias nuevamente!

Respuesta

0

Si no tiene menos colores que la imagen original (¿Android tiene 256 modos de color?), Le sugiero que deshabilite dithering, si amplía su imagen, tiene un efecto visible que quizás destruya una apariencia suave.

Creo que en su caso, el tintineo infiere con anti-aliasing al destruir los colores adicionales que el anti-aliasing necesita para una apariencia suave. Un conteo rápido de color en sus imágenes (dejó uno alrededor de 850, el derecho alrededor de 140) lo confirma.

+0

he probado y no hizo ninguna diferencia real. Admitiré que la única razón por la que está allí es porque alguien en otro hilo de stackoverflow.com lo sugirió: P ¡Aunque aprecio la idea! Realmente, cualquier idea es útil. –

+0

OK, creo que la respuesta de Pedro es más útil en este caso. Todavía no he hecho nada con Android, así que no sabía que hay problemas de tramado y bandas y simplemente respondí en relación con los gráficos en general. – schnaader

+0

Bastante justo. Gracias de nuevo entonces! : D –

1

Esto probablemente esté relacionado con la conversión de imágenes de un formato a otro. Además, las pantallas de Android varían de un dispositivo a otro. Intenta usar otro dispositivo y se verá mejor ... Casi con certeza tendrá un tono diferente.

tratar de leer este gran artículo sobre este problema (y anillado y difuminado) y considerar la adaptación de la imagen que ha creado para que funcione mejor en dispositivos android: http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/

+0

¡Gracias por el consejo! Lo probé en varios dispositivos diferentes (principalmente el Incredible y el Droid X, aunque la imagen tomada anteriormente es del emulador) y es bastante consistente en todos los ámbitos. Me pregunto si guardar los archivos como mapa de bits en lugar de PNG en su lugar? Y leeré ese artículo, parece prometedor. ¡Gracias! –

Cuestiones relacionadas