Mise à l'échelle d'UIImage avec CGAffineTransform et Saving to Parse SDK de UIIImagePicker

J'utilise le code suivant pour resize mon UIImagePickerController .

  CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, 71.0); //This slots the preview exactly in the middle of the screen by moving it down 71 points self.imagePicker.cameraViewTransform = translate; CGAffineTransform scale = CGAffineTransformScale(translate, 1.333333, 1.333333); self.imagePicker.cameraViewTransform = scale; 

Ensuite, je prends la photo et la présente dans un UIImageView

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [picker dismissViewControllerAnimated:NO completion:NULL]; _imageTaken = nil; _imageTaken = [info objectForKey:UIImagePickerControllerEditedImage]; if(_imageTaken==nil) { _imageTaken = [info objectForKey:UIImagePickerControllerOriginalImage]; } if(_imageTaken==nil) { _imageTaken = [info objectForKey:UIImagePickerControllerCropRect]; } [_imageTakenView setContentMode:UIViewContentModeScaleAspectFill]; if (_selfie) { UIImage * flippedImage = [UIImage imageWithCGImage:_imageTaken.CGImage scale:_imageTaken.scale orientation:UIImageOrientationLeftMirrored]; _imageTaken = flippedImage; } _imageTakenView.image = _imageTaken; } 

Tout est bon jusqu'à présent. Ensuite, j'envoie l'image dans ma database en la convertissant en NSData

  _imageData = [[NSData alloc] init]; _imageData = UIImageJPEGRepresentation(_image, .1); 

Lorsque je charge datatables à partir du server et que je les présente dans un autre UIImageView de la même taille, je définis le même rapport d'aspect:

  [_imageViewToShow setContentMode:UIViewContentModeScaleAspectFill]; 

mais l'image semble déformée (écrasée horizontalement). Des idées pour savoir pourquoi cela pourrait être?

Convertir UIImage en NSData et save

 _imageData = UIImageJPEGRepresentation(_image, .1); PFFile *imageFile = [PFFile fileWithName:@"image.png" data:_imageData]; newMessage[@"image"] = imageFile; 

Problème:

Quand je télécharge à nouveau datatables, l'UIImage apparaît écrasé. Quand je regarde l'image sur ma database, ça me semble bien. Je ne sais pas pourquoi cela se passe …

Avant et après les images:

entrez la description de l'image ici

entrez la description de l'image ici

Essayez de normaliser l'orientation de l'image avant de la download. Cela permettra à l'image de fonctionner correctement même si les métadonnées sont perdues

Voici une catégorie pour le faire:

UIImage+OrientationFix.h

 @interface UIImage (OrientationFix) - (UIImage*)imageByNormalizingOrientation; @end 

UIImage+OrientationFix.m

 @implementation UIImage (OrientationFix) - (UIImage*)imageByNormalizingOrientation { if (self.imageOrientation == UIImageOrientationUp) return self; CGSize size = self.size; UIGraphicsBeginImageContextWithOptions(size, NO, self.scale); [self drawInRect:(CGRect){{0, 0}, size}]; UIImage* normalizedImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return normalizedImage; } @end 

Vous devrez juste appeler:

 _imageTaken = [flippedImage normalizedImage];