Photo庫(kù)使用

PHAsset

  • 靜態(tài)資源類(lèi)(詳情)

PHAssetCreationRequest

  • 靜態(tài)資源處理類(lèi)(增刪改查,創(chuàng)建)

PHAssetCollection

  • 相冊(cè)文件夾類(lèi)(相冊(cè))

PHAssetCollectionChangeRequest

  • 相冊(cè)文件夾處理類(lèi)(增刪改查,創(chuàng)建)

PHImageManager

  • 圖片管理類(lèi)(將靜態(tài)資源轉(zhuǎn)成圖片)(requestImageForAsset)

詳情類(lèi)可以通過(guò)fetch獲取到系統(tǒng)相冊(cè)里的相關(guān)資源,包裝的請(qǐng)求類(lèi)可以對(duì)齊進(jìn)行增刪改查創(chuàng)建,圖片管理類(lèi)可以獲取到圖片對(duì)象

所有的修改移動(dòng)圖片操作都要在[[PHPhotoLibrary sharedPhotoLibrary] performChanges:]方法中執(zhí)行

獲取資源方法

   
//    獲取到所有的靜態(tài)資源
    PHFetchResult<PHAsset *> *  assets=[PHAsset fetchAssetsWithOptions:nil];
    for (PHAsset* asset in assets) {
        [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(80, 80) contentMode:PHImageContentModeDefault options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
            NSLog(@"%@",result);
        }];
    }
    
//    獲取到所有的相冊(cè)文件夾
    PHFetchResult<PHAssetCollection *> * collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    for (PHCollection* collection in collections) {
        NSLog(@"%@",collection.localizedTitle);
    }
    
//    獲取到相機(jī)膠卷目錄
    PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].firstObject;
    NSLog(@"%@",cameraRoll.localizedTitle);
    

保存圖片

//保存按鈕事件
- (IBAction)savePic:(UIButton *)sender {
    
    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
    
    switch (status) {
        case PHAuthorizationStatusDenied:
            NSLog(@"授權(quán)拒絕");
            break;
        case PHAuthorizationStatusRestricted:
            NSLog(@"系統(tǒng)原因?qū)е聼o(wú)法授權(quán)相冊(cè)");
        case PHAuthorizationStatusNotDetermined:{
            
            [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
                [self saveImgToCustomPic];
            }];
        }
            break;
        case PHAuthorizationStatusAuthorized:{
            [self saveImgToCustomPic];
        }
            break;
            
        default:
            break;
    }
    
    
}



/** 把相機(jī)膠卷里的圖片保存到自定義相冊(cè)里*/
- (void)saveImgToCustomPic
{
    __block NSString *assetId = nil;
    [SVProgressHUD setBackgroundColor:[UIColor blackColor]];
    [SVProgressHUD setForegroundColor:[UIColor whiteColor]];
    phpLibraryHandler(^{
        //        創(chuàng)建一個(gè)靜態(tài)資源處理對(duì)象 (會(huì)自動(dòng)保存圖片到相機(jī)膠卷)
        assetId = [PHAssetCreationRequest creationRequestForAssetFromImage:_imageView.image].placeholderForCreatedAsset.localIdentifier;
    },^(BOOL success, NSError * _Nullable error) {
        if (!success) {
            [SVProgressHUD showErrorWithStatus:@"保存失敗"];
            return ;
        }
        PHAssetCollection *createdCollection = [self getPHAssetCollection];
        phpLibraryHandler(^{
            //                根據(jù)相片標(biāo)識(shí)獲取到相片對(duì)象
            PHAsset *assets = [PHAsset fetchAssetsWithLocalIdentifiers:@[assetId] options:nil].lastObject;
            //                獲取到已創(chuàng)建相冊(cè)的請(qǐng)求處理對(duì)象
            PHAssetCollectionChangeRequest *collectionRequest =[PHAssetCollectionChangeRequest changeRequestForAssetCollection:createdCollection];
            //                給相冊(cè)添加相片資源
            [collectionRequest addAssets:@[assets]];
        }, ^(BOOL success, NSError * _Nullable error) {
            
            if (!success) {
                [SVProgressHUD showErrorWithStatus:@"保存失敗"];
                return ;
            }
            [SVProgressHUD showSuccessWithStatus:@"保存成功"];
        });
        
    });
    
}


/**返回相冊(cè)對(duì)象*/
- (PHAssetCollection*)getPHAssetCollection
{
    PHFetchResult<PHAssetCollection *> * collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    for (PHAssetCollection* collection in collections) {
        if ([collection.localizedTitle isEqualToString:libraryName]) {
            return collection;
        }
    }
    
    __block NSString *collerctionId = nil;
    //    同步執(zhí)行相冊(cè)創(chuàng)建方法
    [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{
        collerctionId = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:libraryName].placeholderForCreatedAssetCollection.localIdentifier;
    } error:nil];
    return [PHAssetCollection fetchAssetCollectionsWithLocalIdentifiers:@[collerctionId] options:nil].lastObject;
    
    
}

獲取相冊(cè)下的所有靜態(tài)資源

 //    獲取到所有的相冊(cè)文件夾
    PHFetchResult<PHAssetCollection *> * collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    for (PHAssetCollection* collection in collections) {
        
        //        獲取到每個(gè)相冊(cè)
        NSLog(@"%@",collection.localizedTitle);
        
        //        獲取到該相冊(cè)下的所有靜態(tài)資源
        PHFetchResult<PHAsset *> *  assets = [PHAsset fetchAssetsInAssetCollection:collection options:nil];
        for (PHAsset* asset in assets) {
            [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(80, 80) contentMode:PHImageContentModeDefault options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
                NSLog(@"%@",result);
            }];
        }
        
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容