2012-01-17 29 views
5

Tôi cần chụp UIView cụ thể, nhưng kết quả là chất lượng thấp như thế nào có thể sửa lỗi này và tăng chất lượng?Chất lượng thấp của chế độ xem chụp bối cảnh trên iPad

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

bạn có thể thử với điều này cũng UIGraphicsBeginImageContextWithOptions (view.bounds.size, view.opaque, 0.0); –

+0

cảm ơn nhưng không có gì thay đổi! –

+2

Khi bạn nói "chất lượng thấp", ý của bạn là chính xác? Hình ảnh không giống với hình ảnh trên màn hình? Bạn đang sử dụng màn hình hiển thị võng mạc nhưng hình ảnh được chụp không sắc nét? Hình ảnh có bị nhiễu hay bị méo? Điều gì là chính xác sai với nó? – TigerCoding

Trả lời

22

Tôi đoán bạn cần chụp một UIView/UIWindow ở độ phân giải võng mạc (960x640 hoặc 2048x1536) Sử dụng UIGraphicsBeginImageContextWithOptions và thiết lập thông số 0.0f quy mô của nó làm cho nó chụp ở độ phân giải tự nhiên (võng mạc cho iPhone 4 và sau hoặc iPad 3).

Mã này chụp UIView của bạn ở độ phân giải gốc

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

Cái này cũng làm như vậy cho toàn màn hình (cửa sổ chính)

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(); 

Điều này tiết kiệm UIImage ở định dạng jpg với chất lượng 95% trong thư mục tài liệu của ứng dụng

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

hoàn hảo! làm việc cho tôi! – frank

1

Technical Q&A QA1703 giữ mẫu thực sự đẹp để tạo ảnh chụp màn hình.

Tôi không biết liệu tôi có thể đăng nó ở đây hay không nhưng nó có sẵn trên liên kết.

Các vấn đề liên quan