首页 > 代码库 > 截取屏幕并且保存到相册

截取屏幕并且保存到相册

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];
    btn.center = CGPointMake(100, 200);
    [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
    
    myview = [[UIImageView alloc]initWithFrame:CGRectMake(10, 30, 300, 200)];
    [self.view addSubview:myview];
    
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(20, 40, 280, 30)];
    label.text = @"我是黄成都,这是我的截屏保存演练";
    [self.view addSubview:label];
}

-(void)btnClick
{
    UIImage *image = [self makeImageWithView:self.view];
    myview.image = image;
    
    [self saveImageToPhotos:image];
}

//截屏
- (UIImage *)makeImageWithView:(UIView *)view
{
    CGSize s = view.bounds.size;
    // 下面方法,第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。第三个参数就是屏幕密度了,关键就是第三个参数。
    
//    float scale = [[UIScreenmainScreen] scale];//得到设备的分辨率
//    scale = 1; 的时候是代表当前设备是320*480的分辨率(就是iphone4之前的设备)
//    scale = 2; 的时候是代表分辨率为640*960的分辨率
    NSLog(@"%f",[UIScreen mainScreen].scale);
    //绘图
    UIGraphicsBeginImageContextWithOptions(s, NO, [UIScreen mainScreen].scale);
    //渲染
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    //生产图片
    UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

//保存图片到相框
- (void)saveImageToPhotos:(UIImage *)savedImage

{
    
//    image
//    要保存到用户设备中的图片
//    completionTarget
//    当保存完成后,回调方法所在的对象
//    completionSelector
//    当保存完成后,所调用的回调方法。 形式如下:
//    - (void) image: (UIImage *) image
//didFinishSavingWithError: (NSError *) error
//contextInfo: (void *) contextInfo;
//    contextInfo
//    可选的参数,保存了一个指向context数据的指针,它将传递给回调方法。
    UIImageWriteToSavedPhotosAlbum(savedImage,self, @selector(image:didFinishSavingWithError:contextInfo:),NULL);
    
}

- (void)image: (UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo

{
    
    NSString *msg = nil ;
    
    if(error != NULL){
        
        msg = @"保存图片失败" ;
        
    }else{
        
        msg = @"保存图片成功" ;
        
    }
    NSLog(@"%@", msg);
    
}

截取屏幕并且保存到相册