// 获取截屏
- (UIImage *)GetScreenImage
{
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
// 截取屏幕中局部图片 arect想要截图的区域
-(void)GetScreenImageWithRect:(CGRect)aRect
{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(640, 960), YES, 0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = viewImage.CGImage;
CGRect rect =aRect; //这里可以设置想要截图的区域
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:@"zone.png"];
NSLog(@"%@", savedImagePath);
[imageViewData writeToFile:savedImagePath atomically:YES];
CGImageRelease(imageRefRect);
// 第二,保存到相册
UIImage *image = [UIImage imageWithData:imageViewData];
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
}
// 将图片裁剪成圆角的,并没有改变图片的质量
static void AddRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth, float ovalHeight)
{
float fw, fh;
if (ovalWidth == 0 || ovalHeight == 0)
{
CGContextAddRect(context, rect);
return;
}
CGContextSaveGState(context);
CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect));
CGContextScaleCTM(context, ovalWidth, ovalHeight);
fw = CGRectGetWidth(rect) / ovalWidth;
fh = CGRect