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):
- reducir la escala usando BitmapFactory.Options :: inSampleSize-> BitmapFactory.decodeResource () lo más cerca posible de la resolución que necesita, pero no menos que
- 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)