保存圖片到相冊

1狠怨、C語言方法

在需要保存圖片的代碼中調用下列方法即可

    UIImageWriteToSavedPhotosAlbum(self.imageView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

注意:在上訴select方法中必須要按規(guī)定調用下列方法才可以坑资,不可以自定義方法运敢,否則會編譯報錯

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
    if (error) {
        [SVProgressHUD showErrorWithStatus:@"圖片保存失斝B亍!4荨迄沫!"];
    } else {
        [SVProgressHUD showSuccessWithStatus:@"圖片保存成功!"];
    }
}

2涉枫、Photos庫

PHAsset:一張相片或者一個視頻
PHAssetCollection:一個相冊
相片和相冊的操作共有4中情況:增刪改查邢滑,其中增刪改歸納為1類,查歸納為1類;
所有的增刪改操作都需要在-[PHPhotoLibrary performChanges:] 或者 -[PHPhotoLibrary performChangesAndWait:] block方法中執(zhí)行困后,否者會編譯報錯

用戶保存一張圖片到自定義相冊代碼示例

    // 獲取保存到相冊的圖片
    PHFetchResult<PHAsset *> *createdAssets = [self createdAssets];
    if (createdAssets == nil) {
        [SVProgressHUD showErrorWithStatus:@"保存圖片失敗!!!"];
        return;
    }
    
    // 查找自定義相冊
    PHAssetCollection *collect = [self createdCollection];
    if (collect == nil) {
        [SVProgressHUD showErrorWithStatus:@"自定義相冊創(chuàng)建失敗"];
        return;
    }
    
    // 保存圖片到自定義相冊
    [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{
        PHAssetCollectionChangeRequest *request = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:collect];
        [request insertAssets:createdAssets atIndexes:[NSIndexSet indexSetWithIndex:0]];
    } error:&error];
    
    if (error) {
        [SVProgressHUD showErrorWithStatus:@"保存圖片到自定義相冊失敗"];
    } else {
        [SVProgressHUD showSuccessWithStatus:@"保存圖片到自定義相冊成功"];
    }
查找自定義相冊方法乐纸,如果自定義相冊不存在,則創(chuàng)建一個自定義相冊并返回
- (PHAssetCollection *)createdCollection
{
    // 取出軟件名稱
    NSString *title = [NSBundle mainBundle].infoDictionary[(NSString *)kCFBundleNameKey];
    
    // 獲取相冊集
    PHFetchResult<PHAssetCollection *> *collects = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    // 遍歷相冊集摇予,查找自定義相冊
    for (PHAssetCollection *collect in collects) {
        if ([collect.localizedTitle isEqualToString:title]) {
            return collect;
        }
    }
    
    NSError *error = nil;
    __block NSString * createdcollectID = nil;
    
    // 遍歷相冊集沒有找到自定義相冊汽绢,創(chuàng)建一個自定義相冊
    [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{
        // 創(chuàng)建一個自定義相冊,并返回Identifier
        createdcollectID = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:title].placeholderForCreatedAssetCollection.localIdentifier;
    } error:&error];
    
    if (error) {
        return nil;
    } else {
        [SVProgressHUD showSuccessWithStatus:@"相冊創(chuàng)建成功"];
    }
    
    // 通過相冊的Identifier快速遍歷相冊集并返回相冊
    return [PHAssetCollection fetchAssetCollectionsWithLocalIdentifiers:@[createdcollectID] options:nil].firstObject;
}
獲取保存到相冊的圖片方法侧戴,保存圖片到相冊并返回圖片
- (PHFetchResult<PHAsset *> *)createdAssets
{
    NSError *error = nil;
    __block NSString * assetID = nil;
    
    [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{
        // 保存圖片宁昭,并獲取保存圖片的Identifier
        assetID = [PHAssetChangeRequest creationRequestForAssetFromImage:self.imageView.image].placeholderForCreatedAsset.localIdentifier;
    } error:&error];
    
    if (error) {
        return nil;
    }
    
    // 通過圖片的Identifier快速遍歷圖片并返回圖片
    return [PHAsset fetchAssetsWithLocalIdentifiers:@[assetID] options:nil];
}
注意事項,在保存圖片的時候需要確定是否有判斷APP是否有權限訪問相冊酗宋,可調用以下方法根據返回狀態(tài)進行判斷
(void)requestAuthorization:(void(^)(PHAuthorizationStatus status))handler
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末积仗,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子蜕猫,更是在濱河造成了極大的恐慌寂曹,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件回右,死亡現場離奇詭異隆圆,居然都是意外死亡,警方通過查閱死者的電腦和手機翔烁,發(fā)現死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門渺氧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹬屹,你說我怎么就攤上這事侣背。” “怎么了哩治?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵秃踩,是天一觀的道長衬鱼。 經常有香客問我业筏,道長,這世上最難降的妖魔是什么鸟赫? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任蒜胖,我火速辦了婚禮,結果婚禮上抛蚤,老公的妹妹穿的比我還像新娘台谢。我一直安慰自己,他們只是感情好岁经,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布朋沮。 她就那樣靜靜地躺著,像睡著了一般缀壤。 火紅的嫁衣襯著肌膚如雪樊拓。 梳的紋絲不亂的頭發(fā)上纠亚,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音筋夏,去河邊找鬼蒂胞。 笑死,一個胖子當著我的面吹牛条篷,可吹牛的內容都是我干的骗随。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼赴叹,長吁一口氣:“原來是場噩夢啊……” “哼鸿染!你這毒婦竟也來了?” 一聲冷哼從身側響起乞巧,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤牡昆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后摊欠,有當地人在樹林里發(fā)現了一具尸體丢烘,經...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年些椒,在試婚紗的時候發(fā)現自己被綠了播瞳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡免糕,死狀恐怖赢乓,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情石窑,我是刑警寧澤牌芋,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站松逊,受9級特大地震影響躺屁,放射性物質發(fā)生泄漏。R本人自食惡果不足惜经宏,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一犀暑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烁兰,春花似錦耐亏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春择吊,著一層夾襖步出監(jiān)牢的瞬間袱耽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工干发, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留朱巨,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓枉长,卻偏偏與公主長得像冀续,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子必峰,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內容