Tengo mapas de bits que son cuadrados o rectángulos. Tomo el lado más corto y hago algo como esto:
int value = 0;
if (bitmap.getHeight() <= bitmap.getWidth()) {
value = bitmap.getHeight();
} else {
value = bitmap.getWidth();
}
Bitmap finalBitmap = null;
finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value);
Luego lo escalo a un mapa de bits de 144 x 144 usando esto:
Bitmap lastBitmap = null;
lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);
El problema es que recorta la esquina superior izquierda del mapa de bits original. ¿Alguien tiene el código para recortar el centro del mapa de bits?
100x1000
imagen, obtienes una100x550
imagen.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()
)Si desea que el objeto de mapa de bits se recicle, puede pasar opciones que lo hagan así:
De: ThumbnailUtils Documentation
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.
fuente
¿Has considerado hacer esto desde el
layout.xml
? Se podría establecer para suImageView
la ScaleType aandroid:scaleType="centerCrop"
y establecer las dimensiones de la imagen en elImageView
interior de lalayout.xml
.fuente
Puede usar el siguiente código que puede resolver su problema.
El método anterior realiza el escalado posterior de la imagen antes de recortar, para que pueda obtener el mejor resultado con la imagen recortada sin obtener el error OOM.
Para más detalles puedes consultar este blog
fuente
Aquí hay un fragmento más completo que recorta el centro de un [mapa de bits] de dimensiones arbitrarias y escala el resultado a su [IMAGE_SIZE] deseado . Entonces siempre obtendrás un [croppedBitmap] cuadrado escalado del centro de la imagen con un tamaño fijo. ideal para miniaturas y tal.
Es una combinación más completa de las otras soluciones.
fuente
Probablemente la solución más fácil hasta ahora:
importaciones:
fuente
Para corregir la solución @willsteel:
fuente
fuente
fuente