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
手机屏幕截图与图片缩放技术详解
本文详细介绍了如何在iOS设备上捕捉屏幕截图并对其进行缩放处理,包括使用CALayer实现屏幕绘制、获取截图图像以及根据屏幕分辨率调整图片大小的完整流程。

被折叠的 条评论
为什么被折叠?



