//截图
UIGraphicsBeginImageContextWithOptions(CGSizeMake(640, 960), YES, 0);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = viewImage.CGImage;
CGRect rect =CGRectMake(100, 100, 200, 300);//这里可以设置想要截图的区域
CGImageRef imageRefRect =CGImageCreateWithImageInRect(imageRef, rect);
UIImage *sendImage = [[UIImage alloc] initWithCGImage:imageRefRect];
NSData *imageViewData = UIImagePNGRepresentation(sendImage);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"result.png"];
NSLog(@"%@", savedImagePath);
[imageViewData writeToFile:savedImagePath atomically:YES];
CGImageRelease(imageRefRect);
注:iOS7以后renderInContext:由drawViewHierarchyInRect:afterScreenUpdates:替代,可以判断。
同时可以截取整个scrollview得大小
- (UIImage *)imageViewFromScreen:(UIScrollView *)scrollView
{
UIImage* image = nil;
UIGraphicsBeginImageContext(scrollView.contentSize);
{
CGPoint savedContentOffset = scrollView.contentOffset;
CGRect savedFrame = scrollView.frame;
scrollView.contentOffset = CGPointZero;
scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
[scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
scrollView.contentOffset = savedContentOffset;
scrollView.frame = savedFrame;
}
UIGraphicsEndImageContext();
if (image != nil) {
return image;
}
return nil;
}
图片叠加,比如:
// 添加logo水印
- (UIImage *)addlogoImage:(UIImage *)resizedImage
{
UIGraphicsBeginImageContext(resizedImage.size);
[resizedImage drawInRect:CGRectMake(0, 0, resizedImage.size.width, resizedImage.size.height)];
UIImage *maskImage = [UIImage imageNamed:@"dzh_logo.png"];
[maskImage drawInRect:CGRectMake((resizedImage.size.width - maskImage.size.width)/2,
(resizedImage.size.height - maskImage.size.height)/2,
maskImage.size.width,
maskImage.size.height)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
}
0 0