tamaño - ¿Cómo dibujar y escalar un mapa de bits en un lienzo utilizando la interpolación bicúbica en Android?
cuadrícula de dibujo (2)
Debes establecer el indicador FILTER_BITMAP_FLAG en tu pintura.
canvas.drawBitmap(bitmap, matrix, null); //ugly jaggies unless scale is 1:1, but fast
o
Paint paint = new Paint();
paint.setFilterBitmap();
canvas.drawBitmap(bitmap, matrix, paint); // pretty but slower (not too slow, usually)
Lo mismo se aplica a otras formas (azúcar sintáctico) del método drawBitmap
.
No hay documentación en ninguna parte para la mayoría de las opciones de dibujo de Android y tampoco hay documentación para la biblioteca Skia nativa subyacente que hace el renderizado. Estaría más feliz si hubiera. Puede buscar el código fuente de Skia en Google Code Search. Busque Skia y explore la fuente en bruto; esa es la única documentación.
Quiero dibujar un mapa de bits en un lienzo con un tamaño más grande de lo que es. Puedo usar canvas.drawBitmap (bitmap, null, destRect, null); pero eso da una calidad pobre, ya que el resultado está pixelado, si la imagen de origen es más pequeña que el rectángulo de destino.
¿Cómo puedo dibujar mi mapa de bits usando remuestreo bilineal o bicúbico?
Cualquier ayuda sería apreciada, gracias.
FILTER_BITMAP_FLAG no funciona para downscaling en la mayoría de los casos.
Un buen algoritmo de reducción de escala (no como el vecino más cercano) consta de solo 2 pasos (más el cálculo del Rect exacto para el cultivo de imágenes de entrada / salida):
- downscale utilizando BitmapFactory.Options :: inSampleSize-> BitmapFactory.decodeResource () lo más cerca posible de la resolución que necesita, pero no menos que
- obtener la resolución exacta reduciendo la escala un poco usando Canvas :: drawBitmap ()
Aquí hay una explicación detallada de cómo SonyMobile resolvió esta tarea: http://developer.sonymobile.com/2011/06/27/how-to-scale-images-for-your-android-application/
Aquí está el código fuente de utilidades de escala de SonyMobile: http://developer.sonymobile.com/downloads/code-example-module/image-scaling-code-example-for-android/