捕获屏幕图像的分辨率不是视网膜

时间:2012-12-12 04:38:03

标签: iphone screen

enter image description here我使用以下代码捕获屏幕上的视图,但它不像屏幕上那样清晰。 imageView大小为200x200point但刻度为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;
}

2 个答案:

答案 0 :(得分:3)

尝试这样:

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

答案 1 :(得分:1)

您正在使用创建图像上下文的旧方法。请改用:

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

较旧的UIGraphicsBeginImageContext函数始终采用1.0的比例。

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