UIImage * image = [self captureScreenInRect:viewController.view];
float ratio = image.size.width/image.size.height;
image = [self resizeImage:image size:CGSizeMake(height*ratio, height)];
- (UIImage *) captureScreenInRect:(UIView *) view {
CALayer *layer;
layer = view.layer;
UIGraphicsBeginImageContext(view.bounds.size);
CGContextClipToRect (UIGraphicsGetCurrentContext(),view.frame);
[layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenImage;
}
- (UIImage*) resizeImage:(UIImage*)image size:(CGSize)size {
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
([UIScreen mainScreen].scale == 2.0)) {
size = CGSizeMake(size.width*2, size.height*2);
}
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
如果是手机屏幕图捕捉和显示需要考虑屏幕 所以*2。但是如果相机拍照 然后裁剪上传没必要考虑*2