Je crée une application pour iPhone avec une fonction de recadrage d'image. En cela, j'obtiens les photos du UIImagePickerController et je le passe pour le recadrage. Là, il a un scrollview et l'image sélectionnée sera ajoutée comme une sous-vue à la scrollview. Et j'utilise un UIButton pour sélectionner la zone à recadrer. L'utilisateur peut déplacer le bouton sur l'imageview et le placer n'importe où, et lorsque vous cliquez sur le bouton CROP, la zone similaire à la taille du cadre du bouton doit être recadrée à partir de l'imageview.Problème de cadrage d'image dans iOS
J'ai utilisé le code suivant, mais il ne retourne pas l'image réelle.
CGRect clippedRect = CGRectMake(self.scrollView.frame.origin.x+90, self.scrollView.frame.origin.y, self.scrollView.frame.size.width-180, self.scrollView.frame.size.height-220);
CGImageRef imageRef = CGImageCreateWithImageInRect([self.myPhoto CGImage], clippedRect);
UIImage *newImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
self.imageView.image = newImage;
également utilisé
- (UIImage *)cropImage:(UIImage *)oldImage {
CGSize imageSize = self.cropFrame.frame.size;
UIGraphicsBeginImageContextWithOptions(CGSizeMake(imageSize.width, imageSize.height), NO, 0.);
[oldImage drawAtPoint:CGPointMake(xPosition, yPosition)
blendMode:kCGBlendModeCopy
alpha:1.];
UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return croppedImage;
}
mais l'image résultat n'est pas l'image exacte selon le cadre de bouton. Je reçois l'image d'un autre endroit.
code mis à jour
- (void)loadPhoto{
CGFloat w = self.myPhoto.size.width;
CGFloat h = self.myPhoto.size.height;
CGRect imageViewFrame = CGRectMake(0.0f, 0.0f, roundf(w/2.0f), roundf(h/2.0f));
self.scrollView.contentSize = imageViewFrame.size;
UIImageView *iv = [[UIImageView alloc] initWithFrame:imageViewFrame];
iv.contentMode = UIViewContentModeScaleAspectFit;
iv.image = self.myPhoto;
[self.view addSubview:iv];
self.imageView = iv;
[iv release];
}
CGRect crop;//= CGRectMake(10, 10, 360, 360);
crop.origin.x = self.cropFrame.frame.origin.x;
crop.origin.y = self.cropFrame.frame.origin.y;
crop.size.width = roundf(self.cropFrame.frame.size.width * 2.0f); //self.cropFrame.frame.size.width * 2;
crop.size.height = roundf(self.cropFrame.frame.size.height * 2.0f); //self.cropFrame.frame.size.height * 2;
NSLog(@"Rect: %@", NSStringFromCGRect(crop));
self.imageView.image = [self croppedImage:crop];
- (UIImage *)croppedImage:(CGRect)bounds {
CGImageRef imageRef = CGImageCreateWithImageInRect([self.imageView.image CGImage], bounds);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:self.myPhoto.imageOrientation];
CGImageRelease(imageRef);
return croppedImage;
}
S'il vous plaît aider à trouver une solution.
Découvrez [cette catégorie UIImage] (https://github.com/H2CO3/UIImage -Editeur), devrait fonctionner correctement. –
je vous remercie pour ce code, mais toujours son ne fonctionne pas, j'ai mis à jour la question avec le dernier code. J'ai essayé en évitant la vue de défilement, mais toujours aucune aide. – Mithuzz
que voulez-vous dire par "il ne retourne pas l'image réelle"? –