Saltar al contenido

Android: cambiar el tamaño de los mapas de bits sin perder calidad

Solución:

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 de la Rect exacta para el recorte de imágenes de entrada / salida):

  1. reducir la escala usando BitmapFactory.Options :: inSampleSize-> BitmapFactory.decodeResource () lo más cerca posible de la resolución que necesita, pero no menos que
  2. llegar a la resolución exacta reduciendo un poco la escala 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 las utilidades de escala SonyMobile: http://developer.sonymobile.com/downloads/code-example-module/image-scaling-code-example-for-android/

Pruebe el código mencionado a continuación para cambiar el tamaño del mapa de bits.

 public Bitmap get_Resized_Bitmap(Bitmap bmp, int newHeight, int newWidth) {
        int width = bmp.getWidth();
        int height = bmp.getHeight();
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        // CREATE A MATRIX FOR THE MANIPULATION
        Matrix matrix = new Matrix();
        // RESIZE THE BIT MAP
        matrix.postScale(scaleWidth, scaleHeight);

        // "RECREATE" THE NEW BITMAP
        Bitmap newBitmap = Bitmap.createBitmap(bmp, 0, 0, width, height, matrix, false);
        return newBitmap ;
    }

Usé este código para reducir el tamaño de mi mapa de bits, y su calidad, bueno …, fue aceptable.

Espero que esto ayude.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *