Définir les dimensions pour UIImagePickerController" déplacer et mettre à l'échelle " cropbox
Comment l'écran" déplacer et mettre à l'échelle " détermine-t-il les dimensions de sa boîte de culture?
Fondamentalement, je voudrais définir une largeur et une hauteur fixes pour le "CropRect" et laisser l'utilisateur déplacer et mettre à l'échelle son image pour s'adapter à cette boîte comme vous le souhaitez.
Est-ce que quelqu'un sait comment faire cela? (Ou si c'est même possible avec le UIImagePickerController)
Merci!
4 réponses
Impossible avec UIImagePickerController malheureusement. La solution que je recommande est de désactiver l'édition pour le sélecteur d'image et de le gérer vous-même. Par exemple, je mets l'image dans une vue d'image scrollable et zoomable. Au-dessus de la vue de l'image se trouve une position fixe "vue du guide de recadrage" qui dessine l'indicateur de recadrage que l'utilisateur voit. En supposant que la vue guide ait 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 recadrage comme suit. Vous vous pouvez utiliser la catégorie UIImage + redimensionner pour effectuer le recadrage réel.
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 pour le jeu, mais je pense que c'est peut être ce que vous cherchez: https://github.com/gekitz/GKImagePicker
Voici une solution pour le recadrage manuel par Ming Yang. https://github.com/myang-git/iOS-Image-Crop-View
Il offre un cadre rectangulaire, que l'utilisateur peut faire glisser ou glisser pour adapter la partie requise de l'image dans le rectangle. Veuillez noter que cette solution fait l'inverse de la question posée - permet à la taille du rectangle de varier, mais apporte finalement le résultat souhaité.
Il est codé dans Objective-C. Vous devrez peut-être le coder dans Swift ou simplement construire un en-tête de pontage pour connecter le code Objective-C avec le code Swift.
Il est maintenant plus tard que tard mais peut être utile pour quelqu'un. C'est la bibliothèque que j'ai utilisée pour swift (un grand merci à 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 rectangulaire défini par l'utilisateur et également en mode circulaire, par exemple pour mettre à jour l'image de profil. voici un exemple de code 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
}