2012-12-12 36 views
1

enter image description here我使用以下代码捕获屏幕上的视图,但它不像屏幕上那样清晰。 imageView的大小是200x200点,但规模是2.0(视网膜屏幕)。保存的img大小为200x200像素。我怎么能使img像原来那样尖锐?任何帮助将不胜感激!捕获屏幕图像的分辨率不是视网膜

- (UIImage*)captureView:(UIView *)theView { 

    CGRect rect = theView.frame; 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [theView.layer renderInContext:context]; 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return img; 
} 

回答

1

您正在使用创建图像上下文的旧方法。使用这个来代替:

UIGraphicsBeginImageContextWithOptions(rect.size, YES, [UIScreen mainScreen].scale); 

UIGraphicsBeginImageContext功能总是假定为1.0的比例。

如果您需要alpha通道,请将'YES'替换为'NO'。

3

尝试这样的:

 CGRect screenRect = [[UIScreen mainScreen] bounds]; 
    UIGraphicsBeginImageContextWithOptions(screenRect.size, NO, 0.0); 
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return img;