来自 viewcontroller iOS 的质量传递图像丢失
Loss of quality passing images from 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];
然后使用 appdelegate 从另一个 ViewController 获取图像,这是我的完整应用程序流程:
FirstScreen(ViewController) -> TakePhoto or Select from gallery ->
AddMask(ViewController) -> AddStickers(ViewController) ->
LastViewcontroller(ViewController) .
通过使用 UIGraphicsBeginImageContext
,比例因子参数默认为 1.0。
根据 docs(强调我的):
Discussion This function is equivalent to calling the
UIGraphicsBeginImageContextWithOptions function with the opaque
parameter set to NO and a scale factor of 1.0.
如果您在 Retina 设备上使用它,您会看到一些质量损失。
你应该使用UIGraphicsBeginImageContextWithOptions,并为比例因子传入0.0,这将默认为当前主屏幕的比例因子。 (1 个用于非视网膜设备,2 个用于视网膜设备)。
我正在开发一个允许用户在他们的照片上添加面具的应用程序,该应用程序运行良好但我注意到一个问题,我不知道为什么但图像质量下降。 我正在使用此方法将图像传递给视图控制器:
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 or Select from gallery ->
AddMask(ViewController) -> AddStickers(ViewController) -> LastViewcontroller(ViewController) .
通过使用 UIGraphicsBeginImageContext
,比例因子参数默认为 1.0。
根据 docs(强调我的):
Discussion This function is equivalent to calling the UIGraphicsBeginImageContextWithOptions function with the opaque parameter set to NO and a scale factor of 1.0.
如果您在 Retina 设备上使用它,您会看到一些质量损失。
你应该使用UIGraphicsBeginImageContextWithOptions,并为比例因子传入0.0,这将默认为当前主屏幕的比例因子。 (1 个用于非视网膜设备,2 个用于视网膜设备)。