2015-07-30 1 views
0

Je développe une application qui permet aux utilisateurs d'ajouter des masques à leurs photos, l'application fonctionne bien mais j'ai remarqué un problème, je ne sais pas pourquoi mais l'image perd de sa qualité. je suis images en passant à voir les contrôleurs en utilisant cette méthode:Perte de qualité en passant des images de viewcontroller iOS

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

//SETTO STICKERS 
UIGraphicsBeginImageContext(CGSizeMake(_Image.frame.size.width, _Image.frame.size.height)); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[_Image.layer renderInContext:context]; 
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

appDelegate.ImageEnded = screenShot; 
//Instanzio il viewController della main 
LastViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"LastVC"]; 
//Vado alla main 
[self presentModalViewController:VC animated:YES]; 

et en prendre l'image de l'autre ViewController en utilisant la appdelegate, voici mon application complète processus:

FirstScreen (ViewController) -> TakePhoto ou Select de la galerie ->
AddMask (ViewController) -> AddStickers (ViewController) -> LastViewcontroller (ViewController).

Répondre

0

En utilisant UIGraphicsBeginImageContext, le paramètre facteur d'échelle est par défaut 1,0.

Selon la docs (Souligné par):

Discussion Cette fonction équivaut à appeler la fonction de UIGraphicsBeginImageContextWithOptions avec le paramètre opaque réglé sur NO et un facteur d'échelle de 1,0.

Si vous l'utilisez sur un appareil rétinien, vous constaterez une perte de qualité.

Vous devriez utiliser UIGraphicsBeginImageContextWithOptions, et passer en 0.0 pour le facteur d'échelle, qui sera par défaut le facteur d'échelle de l'écran principal actuel. (1 pour nonretina, 2 pour les appareils rétiniens).

+0

très utile! :) – Mark