圖片保存與搜索實(shí)現(xiàn)之iOS版

概述

Photos.framework的常見功能包括:創(chuàng)建自定義相冊、保存圖片到自定義相冊、搜索所有相冊的圖片。本文介紹該實(shí)現(xiàn)。

保存圖片到相冊

復(fù)制代碼


/**

* 保存圖片到相冊

*/

- (IBAction)saveImage {

PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];

if (status == PHAuthorizationStatusDenied) {

NSLog(@"請到【設(shè)置-隱私-照片】打開訪問開關(guān)");

} else if (status == PHAuthorizationStatusRestricted) {

NSLog(@"無法訪問相冊");

} else {

// 保存相片的標(biāo)識

__block NSString *assetId = nil;

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{

// 保存相片到相機(jī)膠卷,并返回標(biāo)識

assetId = [PHAssetCreationRequest creationRequestForAssetFromImage:[UIImage imageNamed:@"logo"]].placeholderForCreatedAsset.localIdentifier;

} completionHandler:^(BOOL success, NSError * _Nullable error) {

if (!success) {

NSLog(@"保存失?。?@", error);

return;

}

// 根據(jù)標(biāo)識獲得相片對象

PHAsset *asset = [PHAsset fetchAssetsWithLocalIdentifiers:@[assetId] options:nil].lastObject;

// 拿到自定義的相冊對象

PHAssetCollection *collection = [self collection];

if (collection == nil) return;

// 保存相片到自定義相冊中

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{

[[PHAssetCollectionChangeRequest changeRequestForAssetCollection:collection] addAssets:@[asset]];

} completionHandler:^(BOOL success, NSError * _Nullable error) {

if (success) {

NSLog(@"保存成功");

} else {

NSLog(@"保存失?。?@", error);

}

}];

}];

}

}


搜索所有相片

復(fù)制代碼


/** * 查詢所有的圖片 */- (IBAction)searchAllImages {? ? ? ? ? ? // 遍歷所有的自定義相冊? ? PHFetchResult*collectionResult0 = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];? ? for (PHAssetCollection *collection in collectionResult0) {? ? ? ? [self searchAllImagesInCollection:collection];? ? }? ? ? ? ? ? // 獲得相機(jī)膠卷的圖片? ? PHFetchResult*collectionResult1 = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];? ? for (PHAssetCollection *collection in collectionResult1) {? ? ? ? if (![collection.localizedTitle isEqualToString:@"Camera Roll"]) continue;? ? ? ? [self searchAllImagesInCollection:collection];? ? ? ? break;? ? }}? ? /** * 查詢某個相冊里面的所有圖片 */- (void)searchAllImagesInCollection:(PHAssetCollection *)collection{? ? // 采取同步獲取圖片(只獲得一次圖片)? ? PHImageRequestOptions *imageOptions = [[PHImageRequestOptions alloc] init];? ? imageOptions.synchronous = YES;? ? ? ? ? ? NSLog(@"相冊名字:%@", collection.localizedTitle);? ? ? ? ? ? // 遍歷這個相冊中的所有圖片? ? PHFetchResult*assetResult = [PHAsset fetchAssetsInAssetCollection:collection options:nil];

for (PHAsset *asset in assetResult) {

// 過濾非圖片

if (asset.mediaType != PHAssetMediaTypeImage) continue;

// 圖片原尺寸

CGSize targetSize = CGSizeMake(asset.pixelWidth, asset.pixelHeight);

// 請求圖片

[[PHImageManager defaultManager] requestImageForAsset:asset targetSize:targetSize contentMode:PHImageContentModeDefault options:imageOptions resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {

NSLog(@"圖片:%@", result);

}];

}


源碼下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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