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

来源:互联网 发布:vscode 字体颜色 编辑:程序博客网 时间:2024/05/16 18:45
  //截图
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