从viewcontroller iOS传递图像的质量损失

时间:2015-07-30 15:08:07

标签: ios objective-c iphone uiviewcontroller photo-gallery

我正在开发一个允许用户在他们的照片上添加面具的应用程序,该应用程序运行良好,但我注意到一个问题,我不知道为什么,但图像失去了质量。 我正在使用此方法将图像传递给视图控制器:

   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];

并使用appdelegate从其他ViewController获取图像,这是我的完整应用程序进程:

  

FirstScreen(ViewController) - > TakePhoto或从库中选择 - >
  AddMask(ViewController) - > AddStickers(ViewController) - >   LastViewcontroller(ViewController)。

1 个答案:

答案 0 :(得分:0)

使用UIGraphicsBeginImageContext,比例因子参数默认为1.0。

根据docs(强调我的):

  

讨论此功能相当于调用   带有opaque的UIGraphicsBeginImageContextWithOptions函数   参数设置为NO ,比例因子为1.0

如果您在视网膜设备上使用它,您会看到一些质量损失。

你应该使用UIGraphicsBeginImageContextWithOptions,并传入0.0作为比例因子,它将默认为当前主屏幕的比例因子。 (1为nonretina,2为视网膜设备)。