2 votes

Comment obtenir les coordonnées d'un recadrage d'image dans Android ?

J'essaie d'obtenir les coordonnées x1, x2, y1, y2 du recadrage de l'image en fonction de cette image.

image

Une aide à ce sujet ?

Le lien suivant est la bibliothèque que j'utilise pour le recadrage des images. Android-Image-Cropper

0voto

forthelulx Points 1370

Bien que l'utilisation de bibliothèques tierces soit conseillée pour les débutants, ce n'est parfois pas le meilleur choix, surtout s'il existe une implémentation de ce que vous voulez faire dans le SDK Android, regardez ce tutoriel par exemple :

https://code.tutsplus.com/tutorials/capture-and-crop-an-image-with-the-device-camera--mobile-11458

Pour ce qui est de votre problème, vous pouvez l'aborder de différentes manières :

Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.yourImage);

croppedImage = Bitmap.createBitmap(mBitmap, 0 , 0 , desiredwidth, desiredheight);
  1. Convertissez votre image en bitmap et recadrez le bitmap, c'est-à-dire récupérez votre image à partir d'une table de dessin ou d'une Uri sur l'appareil puis recadrez-la avec 2 lignes de code, j'ai choisi une table de dessin dans ce cas.

L'utilisation de la réponse ci-dessus ne fonctionne pas si vous souhaitez recadrer des zones hors limites.

Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.yourImage);

Rect mRect= new Rect(x1, y1, x2, y2); 

assert(mRect.left < mRect.right && mRect.top < mRect.bottom);

Bitmap croppedImage = Bitmap.createBitmap(rect.right-rect.left, rect.bottom-rect.top, Bitmap.Config.ARGB_8888);

new Canvas(croppedImage).drawBitmap(mBitmap, -rect.left, -rect.top, null);
  1. Cela permet de définir un rectangle basé sur les coordonnées xy et de recadrer l'image en tant que bitmap sur la base de ces coordonnées, puis d'appeler simplement new Canvas pour la dessiner où vous le souhaitez.

PS : Consultez le sdk Android avant d'utiliser des bibliothèques, il y a beaucoup de bons exemples et cela réduira l'utilisation de bibliothèques inutiles, et cela vous permettra de mieux comprendre le code sous-jacent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X