我使用以下代码捕获屏幕上的视图,但它不像屏幕上那样清晰。 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;
}
答案 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'。