2015-07-30 2 views
0

Я разрабатываю приложение, которое позволяет пользователям добавлять маски на свои фотографии, приложение работает хорошо, но я заметил проблему, я не знаю, почему, но изображение теряет качество. я передаю изображения для просмотра контроллеров с помощью этого метода:Потеря качества передачи изображений с 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]; 

и взять изображение из другого ViewController с помощью AppDelegate, вот мое полное приложение-процесс:

FirstScreen (ViewController) -> TakePhoto или выберите из галереи ->
AddMask (ViewController) -> AddStickers (ViewController) -> LastViewcontroller (ViewController).

ответ

0

Используя UIGraphicsBeginImageContext, параметр масштабного коэффициента по умолчанию равен 1,0.

В соответствии с docs (курсив):

Обсуждение Эта функция эквивалентна вызову функции UIGraphicsBeginImageContextWithOptions с непрозрачной параметром, установленным на NO и масштабным коэффициентом 1,0.

Если вы используете его на сетчатом устройстве, вы увидите потерю качества.

Вы должны использовать UIGraphicsBeginImageContextWithOptions и передать 0.0 для коэффициента масштабирования, который будет по умолчанию соответствовать масштабному коэффициенту текущего основного экрана. (1 для nonretina, 2 для устройств сетчатки).

+0

очень полезно! :) – Mark

Смежные вопросы