Comment l'écran "déplacer et redimensionner" détermine-t-il les dimensions de son cropbox?
En gros, j'aimerais définir une largeur et une hauteur fixes pour le "CropRect" et permettre à l'utilisateur de déplacer et de redimensionner son image pour qu'elle s'adapte à cette case comme souhaité.
Est-ce que quelqu'un sait comment faire ça? (Ou si c'est même possible avec le UIImagePickerController)
Merci!
Pas possible avec UIImagePickerController malheureusement. La solution que je recommande est de désactiver la modification du sélecteur d'images et de la gérer vous-même. Par exemple, je mets l'image dans une vue défilable et zoomable. En haut de la vue de l'image se trouve une "vue du guide de recadrage" à position fixe qui dessine l'indicateur de recadrage visible par l'utilisateur. En supposant que la vue de guidage possède des propriétés pour le rect visible (la partie à conserver) et les largeurs de bord (la partie à ignorer), vous pouvez obtenir le rectangle de rognage comme suit. Vous pouvez utiliser la catégorie UIImage + Resize pour effectuer le rognage.
CGRect cropGuide = self.cropGuideView.visibleRect;
UIEdgeInsets edges = self.cropGuideView.edgeWidths;
CGPoint cropGuideOffset = self.cropScrollView.contentOffset;
CGPoint Origin = CGPointMake( cropGuideOffset.x + edges.left, cropGuideOffset.y + edges.top );
CGSize size = cropGuide.size;
CGRect crop = { Origin, size };
crop.Origin.x = crop.Origin.x / self.cropScrollView.zoomScale;
crop.Origin.y = crop.Origin.y / self.cropScrollView.zoomScale;
crop.size.width = crop.size.width / self.cropScrollView.zoomScale;
crop.size.height = crop.size.height / self.cropScrollView.zoomScale;
photo = [photo croppedImage:crop];
Un peu tard dans le jeu mais je pense que c'est peut-être ce que vous recherchez: https://github.com/gekitz/GKImagePicker
Voici une solution de culture manuelle par Ming Yang. https://github.com/myang-git/iOS-Image-Crop-View
Il offre un cadre rectangulaire, que l'utilisateur peut faire glisser ou faire glisser pour s'adapter à la partie requise de l'image dans le rectangle. S'il vous plaît noter que cette solution fait l'inverse de la question posée - permet à la taille du rectangle varie, mais apporte finalement le résultat souhaité.
Il est codé en Objective-C. Vous devrez peut-être le coder dans Swift ou tout simplement créer un en-tête de pontage pour connecter le code Objective-C au code Swift.
Il est maintenant tard que tard mais peut être utile pour quelqu'un. Voici la bibliothèque que j'ai utilisée pour Swift (merci beaucoup à Tim Oliver ):
comme décrit dans le fichier README dans le lien GitHub ci-dessus, en utilisant cette bibliothèque, vous pouvez obtenir des images recadrées en mode rectangulaire défini par l'utilisateur ainsi qu'en mode circulaire, par exemple Pour mettre à jour l'image de profil, vous trouverez ci-dessous un exemple de code provenant de GitHub:
func presentCropViewController {
let image: UIImage = ... //Load an image
let cropViewController = CropViewController(image: image)
cropViewController.delegate = self
present(cropViewController, animated: true, completion: nil)
}
func cropViewController(_ cropViewController: CropViewController, didCropToImage image: UIImage, withRect cropRect: CGRect, angle: Int) {
// 'image' is the newly cropped version of the original image
}