IOS截图有很多方法,参考博客列表中的第一篇列出了很多种方法,我使用了UIGraphicsBeginImageContext这个方法,也是最常用的方案。
代码示例
1、生成截图的方法
- (UIImage *) captureScreen {
NSLog(@"capture");
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
是从UIGraphicsBeginImageContext这里开始设置底的图片大小,rect可以设置成你截图范围的大小。
2、两张图片的合成
把第一张图片image1贴到image2之上
- (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2 {
UIGraphicsBeginImageContext(image2.size);
// Draw image2
[image2 drawInRect:CGRectMake(0, 0, image2.size.width, image2.size.height)];
// Draw image1
[image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
}
用的是一个原理,这两段代码都是生成了截图的图片,还要把图片保存到相册里面。
3、把图片保存到相册
- (void)saveScreenshotToPhotosAlbum:(UIView *)view
{
//截图保存到相册
// UIImageWriteToSavedPhotosAlbum([self captureScreen], nil, nil, nil);
//把一张图片贴到截图上面
UIImageWriteToSavedPhotosAlbum([self addImage:[UIImage imageNamed:@"demo.jpg"] toImage:[self captureScreen]], nil, nil, nil);
}
把图片demo.jpg贴到截图上面,demo的效果是这样,位置在drawInRect里面调整即可
Demo下载:
Github下载:https://github.com/DamonHu/HudongBlogDemo/tree/master/screenshotDemo
参考文章
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/357.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!