Si bien la mayoría de las respuestas anteriores proporcionan una forma de hacer esto, ya hay una forma integrada de lograr esto y es 1 línea de código ( ThumbnailUtils.extractThumbnail()
)
int dimension = getSquareCropDimensionForBitmap(bitmap);
bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension);
...
//I added this method because people keep asking how
//to calculate the dimensions of the bitmap...see comments below
public int getSquareCropDimensionForBitmap(Bitmap bitmap)
{
//use the smallest dimension of the image to crop to
return Math.min(bitmap.getWidth(), bitmap.getHeight());
}
Si desea que el objeto de mapa de bits se recicle, puede pasar opciones que lo hagan así:
bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
De: ThumbnailUtils Documentation
Extracto público de mapa de bits estático (fuente de mapa de bits, ancho int, alto int)
Agregado en API nivel 8 Crea un mapa de bits centrado del tamaño deseado.
Parámetros fuente original mapa de bits ancho fuente ancho objetivo altura altura objetivo
Algunas veces me estaba quedando sin memoria cuando usaba la respuesta aceptada, y usar ThumbnailUtils resolvió esos problemas por mí. Además, esto es mucho más limpio y más reutilizable.