Android Culture Centre de l'image Bitmap
J'ai bitmaps qui sont des carrés ou des rectangles. Je prends le côté le plus court et de faire 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);
Puis-je changer l'échelle pour un 144 x 144 Bitmap à l'aide de ceci:
Bitmap lastBitmap = null;
lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);
Problème, c'est qu'il recadre le coin supérieur gauche de l'image d'origine, quelqu'un a le code pour recadrer le centre de l'image bitmap?
Vous devez vous connecter pour publier un commentaire.
Ceci peut être réalisé avec: Bitmap.createBitmap(source, x, y, largeur, hauteur)
100x1000
image que vous obtenez en retour un100x550
image.Alors que la plupart des réponses ci-dessus fournissent un moyen pour ce faire, il est déjà intégré dans la façon d'accomplir cela et c'est 1 ligne de code (
ThumbnailUtils.extractThumbnail()
)Si vous voulez l'objet bitmap à être recyclé, vous pouvez passer des options qui le rendent si:
À partir de: ThumbnailUtils Documentation
J'ai été faire des erreurs de mémoire insuffisante parfois lors de l'utilisation de la accepté de répondre, et à l'aide de ThumbnailUtils résolu ces questions pour moi. De Plus, c'est beaucoup plus propre et plus réutilisable.
Avez-vous envisagé de faire cela à partir de la
layout.xml
? Vous pouvez définir pour votreImageView
la ScaleType àandroid:scaleType="centerCrop"
et de définir les dimensions de l'image dans leImageView
à l'intérieur de lalayout.xml
.Vous pouvez utilisé le code suivant pour résoudre votre problème.
Méthode ci-dessus ne postScalling de l'image avant de recadrage, de sorte que vous pouvez obtenir le meilleur résultat avec l'image recadrée sans se OOM erreur.
Pour plus de détails vous pouvez vous référer ce blog
Ici une information plus complète sur l'extrait de code qui rogne le centre d'un [bitmap] de l'arbitraire des dimensions et des échelles, le résultat de votre choix [IMAGE_SIZE]. Ainsi, vous obtiendrez toujours une [croppedBitmap] échelle carré du centre de l'image avec une taille fixe. idéal pour thumbnailing et ces.
Ses plus complète de la combinaison d'autres solutions.
Probablement la solution la plus simple pour l'instant:
importations:
Pour corriger @willsteel solution: