您的位置:首页 > 移动开发 > IOS开发

iOS 图片处理(截图,图片叠加(添加水印))

2015-09-15 16:51 429 查看
//截图
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: