我正在开发一个允许用户在他们的照片上添加面具的应用程序,该应用程序运行良好,但我注意到一个问题,我不知道为什么,但图像失去了质量。 我正在使用此方法将图像传递给视图控制器:
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)。
答案 0 :(得分:0)
使用UIGraphicsBeginImageContext
,比例因子参数默认为1.0。
根据docs(强调我的):
讨论此功能相当于调用 带有opaque的UIGraphicsBeginImageContextWithOptions函数 参数设置为NO ,比例因子为1.0 。
如果您在视网膜设备上使用它,您会看到一些质量损失。
你应该使用UIGraphicsBeginImageContextWithOptions,并传入0.0作为比例因子,它将默认为当前主屏幕的比例因子。 (1为nonretina,2为视网膜设备)。