2012-03-06 12 views
5

El siguiente código cambia el tamaño de un mapa de bits y mantiene la relación de aspecto. Me preguntaba si existe una forma más eficiente de redimensionar, porque tengo la idea de que estoy escribiendo código que ya está disponible en la API de Android.Cambiar el tamaño de un mapa de bits

private Bitmap resizeImage(Bitmap bitmap, int newSize){ 
    int width = bitmap.getWidth(); 
    int height = bitmap.getHeight(); 

    int newWidth = 0; 
    int newHeight = 0; 

    if(width > height){ 
     newWidth = newSize; 
     newHeight = (newSize * height)/width; 
    } else if(width < height){ 
     newHeight = newSize; 
     newWidth = (newSize * width)/height; 
    } else if (width == height){ 
     newHeight = newSize; 
     newWidth = newSize; 
    } 

    float scaleWidth = ((float) newWidth)/width; 
    float scaleHeight = ((float) newHeight)/height; 

    Matrix matrix = new Matrix(); 
    matrix.postScale(scaleWidth, scaleHeight); 

    Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, 
      width, height, matrix, true); 

    return resizedBitmap; 
} 

Respuesta

0

Realmente no lo creo, he hecho casi de la misma manera que tú, y tuvo la idea de las páginas de desarrolladores de Android ...

0

depende de cómo se está utilizando la imagen . Si todo lo que quiere hacer es mostrar el mapa de bits en una Vista, simplemente llame al myImageView.setImageBitmap(bitmap) y deje que el marco cambie su tamaño. Pero si le preocupa la memoria, escalar primero puede ser un buen enfoque.

Cuestiones relacionadas