Низкое качество захвата просмотра контекста на iPad

Мне нужно захватить конкретный UIView, но результат в низком качестве, как это можно исправить и повысить качество?

UIGraphicsBeginImageContext(captureView.bounds.size);
    [captureView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil);
    UIGraphicsEndImageContext();

1 ответ

Решение

Я предполагаю, что вам нужно захватить окно UIView/UIWindow в разрешении сетчатки (960x640 или 2048x1536) с помощью UIGraphicsBeginImageContextWithOptions и установить его параметр масштаба 0.0f, чтобы он захватывал в собственном разрешении (сетчатка для iPhone 4 и более поздних версий или iPad 3).

Этот код захватывает ваш UIView в родном разрешении

CGRect rect = [captureView bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[captureView.layer renderInContext:context];   
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Этот делает то же самое для полного экрана (окно ключа)

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];   
UIImage *capturedScreen = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Это сохраняет UIImage в формате jpg с качеством 95% в папке документов приложения

NSString  *imagePath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/capturedImage.jpg"]];    
[UIImageJPEGRepresentation(capturedImage, 0.95) writeToFile:imagePath atomically:YES];

Технические вопросы и ответы QA1703 содержит действительно хороший пример кода для создания скриншота.

Я не знаю, смогу ли я опубликовать это здесь, но это доступно по ссылке.

Другие вопросы по тегам