J'ai des bitmaps qui sont des carrés ou des rectangles. Je prends le côté le plus court et fais quelque chose comme ceci:
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);
Ensuite, je le redimensionne à un bitmap 144 x 144 en utilisant ceci:
Bitmap lastBitmap = null;
lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);
Le problème est qu'il recadre le coin supérieur gauche du bitmap d'origine. Quelqu'un a-t-il le code pour recadrer le centre du bitmap?
100x1000
image, vous récupérez une100x550
image.Bien que la plupart des réponses ci-dessus fournissent un moyen de le faire, il existe déjà un moyen intégré de le faire et il s'agit d'une ligne de code (
ThumbnailUtils.extractThumbnail()
)Si vous voulez que l'objet bitmap soit recyclé, vous pouvez passer des options qui le rendent ainsi:
De: Documentation ThumbnailUtils
Je sortais parfois d'erreurs de mémoire lors de l'utilisation de la réponse acceptée, et l'utilisation de ThumbnailUtils a résolu ces problèmes pour moi. De plus, c'est beaucoup plus propre et plus réutilisable.
la source
Avez-vous envisagé de faire cela depuis le
layout.xml
? Vous pouvez définir pour votreImageView
l' ScaleType àandroid:scaleType="centerCrop"
et définir les dimensions de l'image dans l'ImageView
intérieur dulayout.xml
.la source
Vous pouvez utiliser le code suivant qui peut résoudre votre problème.
La méthode ci-dessus fait postScalling de l'image avant le recadrage, afin que vous puissiez obtenir le meilleur résultat avec l'image recadrée sans obtenir d'erreur OOM.
Pour plus de détails, vous pouvez consulter ce blog
la source
Voici un extrait de code plus complet qui rogne le centre d'un [bitmap] de dimensions arbitraires et met le résultat à l' échelle [IMAGE_SIZE] souhaitée . Ainsi, vous obtiendrez toujours un carré [croppedBitmap] du centre de l'image avec une taille fixe. idéal pour les vignettes et autres.
C'est une combinaison plus complète des autres solutions.
la source
Probablement la solution la plus simple à ce jour:
importations:
la source
Pour corriger la solution @willsteel:
la source
la source
la source