studio redimensionar java android bitmap image-scaling android-image

java - redimensionar - Bordes irregulares en imágenes renderizadas en Android



resize image android studio (2)

Eso 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.

Intente leer este excelente artículo sobre este problema (y bandas y tramado) y considere adaptar la imagen que creó para que funcione mejor en dispositivos Android: http://www.curious-creature.org/2010/12/08/bitmap -quality-banding-and-dithering /

Actualmente estoy desarrollando mi primera aplicación para Android y tengo algunos problemas para renderizar 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, final a la derecha:]

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

Estoy intentando todo lo que conozco y cada consejo que he podido encontrar mirando en línea, pero nada parece arreglarlo.

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

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

Una vez que tengo la imagen, creo una pintura, establezco algunos atributos de suavizado en verdadero y luego lo dibujo 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 obviamente puede ver arriba, la calidad de la 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 usando un método SurfaceView para manejar el dibujo, de naturaleza similar al ejemplo LunarLander dado en el SDK.

¡Gracias de nuevo!


Si no tienes muchos menos colores que los de la imagen original (¿Android tiene 256 modos de color?), Te sugiero que deshabilites el tramado , si amplías la imagen, tiene un efecto visible que quizás destruya una mirada suave.

Creo que en su caso, el difuminado infiere el 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.