网络图片和视频保存

保存图片

1741974-16c605598299c283.png
image.png
1741974-b3aabdcfc701fe26.png
image.png
1741974-69d35194a2ef2c90.png
image.png

保存视频

1741974-a5a4c0722b180c1d.png
image.png
1741974-dcca6341ce4a627b.png
image.png
1741974-e830f496613945a4.png
image.png
1741974-7f4a9600c02e10c4.png
image.png
1741974-69d35194a2ef2c90.png
image.png
  • 保存图片
-(void)save{
    NSURL *url = [NSURL URLWithString: self.imageUrlArr[self.currentIndex]];
    SDWebImageManager *manager = [SDWebImageManager sharedManager];
    __block UIImage *img;
    [manager diskImageExistsForURL:url completion:^(BOOL isInCache) {
        if (isInCache) {
            img =  [[manager imageCache] imageFromDiskCacheForKey:url.absoluteString];
        } else {
            //从网络下载图片
            NSData *data = [NSData dataWithContentsOfURL:url];
            img = [UIImage imageWithData:data];
        }
        // 保存图片到相册中
        UIImageWriteToSavedPhotosAlbum(img,self, @selector(image:didFinishSavingWithError:contextInfo:),nil);
        self.indicatorView.center = self.center;
        [self addSubview:self.indicatorView];
        [self.indicatorView startAnimating];
    }];
}
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;{
    [self.indicatorView removeFromSuperview];
    self.savaImageTipLabel.center = self.center;
    [self addSubview:self.savaImageTipLabel];
    if (error) {
        self.savaImageTipLabel.text = @"保存失败";
    } else {
        self.savaImageTipLabel.text = @"保存成功";
    }
    [self.savaImageTipLabel performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1.0];
}
- (UIActivityIndicatorView *)indicatorView
{
    if (!_indicatorView) {
        _indicatorView = [[UIActivityIndicatorView alloc] init];
        _indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
    }
    return _indicatorView;
}

- (UILabel *)savaImageTipLabel{
    if (_savaImageTipLabel == nil) {
        _savaImageTipLabel = [[UILabel alloc] init];
        _savaImageTipLabel.textColor = [UIColor whiteColor];
        _savaImageTipLabel.backgroundColor = [UIColor colorWithRed:0.1f green:0.1f blue:0.1f alpha:0.90f];
        _savaImageTipLabel.textAlignment = NSTextAlignmentCenter;
        _savaImageTipLabel.font = [UIFont boldSystemFontOfSize:17];
        _savaImageTipLabel.bounds = CGRectMake(0, 0, 150, 30);
    }
    return _savaImageTipLabel;
}
  • 保存视频
-(void)save{
    VideoModel *model = self.videos[self.index];
    [self playerDownload:[NSString stringWithFormat:@"%@%@",image_header,model.url]];
}
//-----下载视频--
- (void)playerDownload:(NSString *)url{
    self.indicatorView.center = self.view.center;
    [self.view addSubview:self.indicatorView];
    [self.indicatorView startAnimating];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    NSDateFormatter *format = [[NSDateFormatter alloc] init];
    format.dateFormat = @"yyyy-MM-ddHH:mm:ss";
    NSString *dateStr = [format stringFromDate:[NSDate date]];
    NSString  *fullPath = [NSString stringWithFormat:@"%@/%@",documentsDirectory,[NSString stringWithFormat:@"%@.mp4",dateStr]];
    NSLog(@"fullPath = %@",fullPath);
    NSURL *urlNew = [NSURL URLWithString:url];
    NSURLRequest *request = [NSURLRequest requestWithURL:urlNew];
    NSURLSessionDownloadTask *task =
    [manager downloadTaskWithRequest:request
                            progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
                                return [NSURL fileURLWithPath:fullPath];
                            }
                   completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
                       NSLog(@"%@",response);
                       [self saveVideo:fullPath];
                   }];
    [task resume];
}
//videoPath为视频下载到本地之后的本地路径
- (void)saveVideo:(NSString *)videoPath{
    if (videoPath) {
        NSURL *url = [NSURL URLWithString:videoPath];
        BOOL compatible = UIVideoAtPathIsCompatibleWithSavedPhotosAlbum([url path]);
        if (compatible)
        {
            //保存相册核心代码
            UISaveVideoAtPathToSavedPhotosAlbum([url path], self, @selector(savedPhotoImage:didFinishSavingWithError:contextInfo:), nil);
        }
    }
}
//保存视频完成之后的回调
- (void) savedPhotoImage:(UIImage*)image didFinishSavingWithError: (NSError *)error contextInfo: (void *)contextInfo {
    [self.indicatorView removeFromSuperview];
    self.savaImageTipLabel.center = self.view.center;
    [self.view addSubview:self.savaImageTipLabel];
    if (error) {
        NSLog(@"保存视频失败%@", error.localizedDescription);
        self.savaImageTipLabel.text = @"保存失败";
    } else {
        self.savaImageTipLabel.text = @"保存成功";
    }
    [self.savaImageTipLabel performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1.0];
}
- (UIActivityIndicatorView *)indicatorView
{
    if (!_indicatorView) {
        _indicatorView = [[UIActivityIndicatorView alloc] init];
        _indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
    }
    return _indicatorView;
}
- (UILabel *)savaImageTipLabel{
    if (_savaImageTipLabel == nil) {
        _savaImageTipLabel = [[UILabel alloc] init];
        _savaImageTipLabel.textColor = [UIColor whiteColor];
        _savaImageTipLabel.backgroundColor = [UIColor colorWithRed:0.1f green:0.1f blue:0.1f alpha:0.90f];
        _savaImageTipLabel.textAlignment = NSTextAlignmentCenter;
        _savaImageTipLabel.font = [UIFont boldSystemFontOfSize:17];
        _savaImageTipLabel.bounds = CGRectMake(0, 0, 150, 30);
    }
    return _savaImageTipLabel;
}

猜你喜欢

转载自blog.csdn.net/weixin_33812433/article/details/87469269