2012-01-17 12 views
5

Belirli UIView yakalamalarına ihtiyacım var, ancak sonuç düşük kaliteyle bunu nasıl düzeltebilir ve kaliteyi artırabilir?iPad kalitesinde yakalama görünümünün kalitesi düşük

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

Ayrıca bu UIGraphicsBeginImageContextWithOptions (view.bounds.size, view.opaque, 0.0) ile de deneyebilirsiniz; –

+0

teşekkürler ama hiçbir şey değişmez! –

+2

"Düşük kalite" derken, tam olarak ne demek istiyorsun? Görüntü ekranınkiyle aynı görünmüyor mu? Retina ekranı kullanıyor musunuz, ancak yakalanan görüntü keskin değil mi? Görüntü grenli mi yoksa çarpık mı? Tam olarak yanlış olan nedir? – TigerCoding

cevap

22

Ben UIGraphicsBeginImageContextWithOptions kullanarak retina çözünürlükte (960x640 veya 2048x1536) bir yakalama UIView/UIWindow ihtiyaç tahmin ve daha sonra ya iPad 3 onun ölçek parametresi 0.0f o doğal çözünürlükte iPhone 4 için (retina yakalamak yapar kurmak ve).

Bu kod doğal çözünürlük Bu seferki tam ekran (anahtar pencere)

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

Bu% 95 kalitesinde ile jpg formatında UIImage kaydeder için aynısını yapar

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

daki UIView yakalamak uygulamasının doküman klasörü

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

Mükemmel! benim için çalış! – frank

1

Technical Q&A QA1703 gerçekten güzel bir örneği tutan ekran görüntüsü yapmak için kod.

Buradan yayınlayıp yayınlayamayacağımı bilmiyorum, ancak bağlantıda mevcut.