2013-03-03 160 views
1

我捕捉画面的一部分,所述应用程序当前正在使用以下代码表示当丢失的质量:捕获屏幕

UIGraphicsBeginImageContext(self.view.bounds.size); 
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *sourceImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

UIGraphicsBeginImageContext(CGSizeMake(320, 320)); 
[sourceImage drawAtPoint:CGPointMake(0, -45)]; 
UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

问题是,比较到原来的画面时,结果具有降低的质量。 如何防止质量损失?

+0

检查这个帖子http://stackoverflow.com/questions/13832871/resolution-of-capture-screen-image-is-not-retina – 2013-03-03 12:36:09

回答

4

为您的信息。

// Create a graphics context with the target size 
// On iOS 4 and later, use UIGraphicsBeginImageContextWithOptions to take the scale into consideration 
// On iOS prior to 4, fall back to use UIGraphicsBeginImageContext 
CGSize imageSize = [[UIScreen mainScreen] bounds].size; 
if (NULL != UIGraphicsBeginImageContextWithOptions) 
    UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0); 
else 
    UIGraphicsBeginImageContext(imageSize); 

CGContextRef context = UIGraphicsGetCurrentContext(); 
+0

太好了!简单而且很好的解释! – 2013-04-02 05:11:42