iOS 存在的图片不保存到相册

保存图片到系统相册

first, 先要讲的是如何将一张图片保存到系统的相册, 这里我们就不讲保存到自定义的相册什么鬼的了, 对自定义相册有兴趣的请关注这张界面的左上角那个红色的叉叉, 对, 就是这样.

保存图片到相册的方法有很多, 首先是C语言的:
就像这样

UIImageWriteToSavedPhotosAlbum(self.iconView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 
```
还有这样
```
 '' (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo'' {
    '' if(!error){
        '' NSLog(@"save success");
    '' }else{
        '' NSLog(@"save failed");
    '' }'' 
}
```
对, 第二个就是第一个的回调的方法 
嗯, C语言的方法就是这样

然后就是OC的方法了, OC的方法有很多, 这里我还是捡一个用的顺手的吧, 其他的
就不举了,
等等....
你才不举呢!!
```
    '' ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    '' 
    '' [library writeImageToSavedPhotosAlbum:self.preViewImage.image.CGImage orientation:(ALAssetOrientation)self.preViewImage.image.imageOrientation completionBlock:^(NSURL *assetURL, NSError *error) {          '' 
            '' [self showMessage:@"保存成功"];
            '' 
        '' } failureBlock:^(NSError *error) {
            '' [self showMessage:@"保存失败"];
        '' }];
    '' }];
'' }
```
> 对, 没错, 这个是ios 9以前的方法, 现在已经废弃了, 但我就是喜欢用!你管的着么?— 莎士比亚

###嗯, 感觉我要说完了.
#错!
你们完全搞错重点了, 我其实并不是来说如何保存一个图片的, 毕竟保存图片哪里都有, 这不是我要讲的重点. 因为我有说的是独一家的, 那就是保存图片的时候怎么才能不保存相同的图片, 就像你在网易新闻看新闻, 觉的这个图片很有(huang)趣(bao), 你就可以点一下保存图片到自己手机的相册. 再点一下, 又多了一张, 在点一下, 又多了一张........但是我要这么多相同的干嘛啊? 既占相册的空间不说, 这不是有病么?
嗯, 那么我就要说怎么判断一张图片你之前是否保存过了
直接上代码
```
- '' (void)saveImageToPhone {
    '' // 保存图片, 并且保存的图片不能再次被保存直到被删除
    '' NSString *key = [NSString stringWithFormat:@"assetUrl %@",imageModel.url];
    '' 
    '' NSString *savedValue = [[NSUserDefaults standardUserDefaults] stringForKey:key];
    '' NSURL *url = [NSURL URLWithString:savedValue];
    '' 
    '' if (url != nil) {
        '' PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:[NSArray arrayWithObject:url] options:nil];
        '' 
        '' if (result.count) {
            '' [self showMessage:@"图片已经存在"];
            '' return;
        '' }
    '' }
    '' 
    '' ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    '' 
    '' [library writeImageToSavedPhotosAlbum:self.iconView.image.CGImage orientation:(ALAssetOrientation)self.preViewImage.image.imageOrientation completionBlock:^(NSURL *assetURL, NSError *error) {
        '' [library assetForURL:assetURL resultBlock:^(ALAsset *asset) {
            '' 
            '' NSString *ass = [assetURL absoluteString];
            '' [[NSUserDefaults standardUserDefaults] setObject:ass forKey:key];
            '' [[NSUserDefaults standardUserDefaults] synchronize];
            '' 
            '' [self showMessage:@"保存成功"];
            '' 
        '' } failureBlock:^(NSError *error) {
            '' [self showMessage:@"保存失败"];
        '' }];
    '' }];'' 
}
```

> 对, 没错, 这个就是终极版的了, 用到了NSUserDefaults 保存每个图片的asset对象里的assetURL, 要是key对应的value有值并且数量不为零的话, 那就说明存在. 就不需要重复保存了.  **注意**:里面需要import <AssetsLibrary/AssetsLibrary.h>这个框架, 并且使用的是这个框架里的writeImageToSavedPhotosAlbum:方法来保存图片而不是使用C语言的那个方法了.

###就这样吧.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,246评论 4 61
  • 目录 第二章 爵风 五年前 风格曼斯·巴塞小镇 阳光照耀着小镇,镇子上的人熙熙攘攘的,叫卖声,交谈声不绝于耳。 呼...
    长生一叶阅读 226评论 0 2
  • 有雨下阅读 293评论 2 1
  • 紧锣密鼓的育婴师培训到今天下午为止,正式画上圆满的句号,非常感谢苏曼老师,刘芳老师,朱朱老师的辛苦付出,为我...
    亲爱的小鱼老师阅读 5,127评论 1 9
  • 不知道从何说起,一直以为你过得应该比我开心。 漂亮的学历,优秀的成绩,姣好的容貌,体贴的男友。 一直以为你拥有的比...
    知了知了知了阅读 288评论 0 0