亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用ALAssetsLibrary讀取所有照片

2019-11-09 17:48:57
字體:
來源:轉載
供稿:網友

一. ALAssetsLibrary 介紹

ALAssetsLibrary 提供了訪問iOS設備下”照片”應用下所有照片和視頻的接口;

從 ALAssetsLibrary 中可讀取所有的相冊數據,即 ALAssetsGroup 對象列表;從每個 ALAssetsGroup 中可獲取到其中包含的照片或視頻列表,即 ALAsset 對象列表;每個 ALAsset 可能有多個rePResentations表示,即 ALAssetRepresentation 對象,使用其 defaultRepresentation 方法可獲得其默認representations,使用[asset valueForProperty: ALAssetPropertyRepresentations ]可獲取其所有representations的 UTI 數組。從ALAsset對象可獲取縮略圖 thumbnail 或 aspectRatioThumbnail ;從 ALAssetRepresentation 對象可獲取全尺寸圖片( fullResolutionImage ),全屏圖片( fullScreenImage )及圖片的各種屬性: orientation , dimensions, scale , url , metadata 等。

其層次關系為 ALAssetsLibrary -> ALAssetsGroup -> ALAsset ->ALAssetRepresentation 

注意:

The lifetimes of objects you get back from a library instance are tied to the lifetime of the library instance.

通過ALAssetsLibrary對象獲取的其他對象只在該ALAssetsLibrary對象生命期內有效,若ALAssetsLibrary對象被銷毀,則其他從它獲取的對象將不能被訪問,否則有會錯誤。 

invalid attempt to access ALAssetPrivate past the lifetime of its owning ALAssetsLibraryALAssetRepresentation的 metadata 方法很慢,我在iphone4 iOS5.1.1中測試,此方法返回需要40-50ms,所以獲取圖片的個各種屬性盡量直接從ALAssetRepresentation中獲取,不要讀取metadata。 這里 給出了一個此方法占用內存過多的解釋,調用多次也確實很容易會memory warning,或許也能解析其為什么很慢吧。

The method [representation metadata] returns an autoreleased object and possibly creates more autoreleased objects when it executes. All these instances are added to the autorelease pool, waiting to be finally released (and their memory freed) when the ARP gets the chance to drain itself.

系統”相冊”程序顯示的圖片是 fullScreenImage ,而不是 fullResolutionImage ,fullResolutionImage尺寸太大,在手機端顯示推薦用fullScreenImage。 fullScreenImage已被調整過方向,可直接使用,即
[UIImage imageWithCGImage:representation.fullScreenImage];

使用fullResolutionImage要自己調整方法和scale,即

[UIImage imageWithCGImage:representation.fullResolutionImage scale:representation.scale orientation:representation.orientation];

二.創建 ALAssetsLibrary對象

使用ALAssetsLibrary之前需導入頭文件和AssetsLibrary.framework。

  #import      ...  ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc]init];  ... 

三.遍歷Assets Group

使用 enumerateGroupsWithTypes:usingBlock:failureBlock: 方法可遍歷assets group;此方法為異步執行,若之前未被授權過,此方法會向用戶請求訪問數據的權限;若用戶拒絕授權或其他錯誤則會執行failureBlock;如果用戶關掉了位置服務(Location Services,在設置->通用中),返回的錯誤為ALAssetsLibraryAccessGloballyDeniedError 。enumerationBlock和failureBlock與在調用此方法的線程內執行,若要在背景線程進行遍歷,可將遍歷代碼放入GCD或NSOperation中。
    [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {        if (!group) {            [tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];        }else{            [groupsArray addObject:group];            ...        }    } failureBlock:^(NSError *error) {        NSLog(@"error:%@",error);    }];

四.遍歷Assets Group中的Assets

使用 enumerateAssetsUsingBlock: 方法或者其他變體方法可遍歷ALAssetsGroup中的所有ALAsset;可通過 setAssetsFilter: 設置過濾器( ALssetsFilter )使enumerateAssetsUsingBlock:只返回特定類型asset,而 numberOfAssets 只返回特定類型asset的數量。 可以設置只顯示Photo( allPhotos ),只顯示Video( allVideos ),或顯示全部(allAssets )。enumerateAssetsUsingBlock:為同步方法,只有所有Asset遍歷完才返回。所以需要將遍歷代碼放入背景線程,防止阻塞UI線程。
    [assetsGroup setAssetsFilter:[ALAssetsFilter allPhotos]];    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{        [assetsGroup enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {            if (!result) {                [tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];            }else{                [assetsArray addObject:result];                ...            }        }];    });

五.根據url獲取asset

使用ALAssetsLibrary的 assetForURL:resultBlock:failureBlock: 方法,可根據之前從ALAssetRepresentation中獲取的url重新獲取ALAsset對象,此方法同enumerateGroupsWithTypes:usingBlock:failureBlock:一樣為異步方法。

六.獲取Assets的各種屬性

相冊封面圖片 [assetsGroup posterImage ];照片url[[[asset defaultRepresentation] url] absoluteString];照片縮略圖 [asset thumbnail]; [asset aspectRatioThumbnail];照片全尺寸圖 [[asset defaultRepresentation] fullResolutionImage];照片全屏圖 [[asset defaultRepresentation] fullScreenImage];照片創建時間 [asset valueForProperty:ALAssetPropertyDate];照片拍攝位置(可能為nil) [asset valueForProperty:ALAssetPropertyLocation];照片尺寸 [[asset defaultRepresentation] dimensions];
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91av在线不卡| 久久91精品国产91久久久| 欧美激情国产日韩精品一区18| 国产福利精品视频| 国内精品久久久久久中文字幕| 欧美二区乱c黑人| 亚洲视频精品在线| 国产在线精品自拍| 国内伊人久久久久久网站视频| 亚洲色图在线观看| 色哟哟网站入口亚洲精品| 久久精品影视伊人网| 不卡av电影院| 97人洗澡人人免费公开视频碰碰碰| 91日本在线视频| 高清一区二区三区四区五区| 大量国产精品视频| 成人激情免费在线| 欧美成人在线影院| 中日韩美女免费视频网址在线观看| 日韩在线观看你懂的| 中文字幕日韩电影| 精品五月天久久| 韩国日本不卡在线| 亚洲a在线观看| 国产精品入口福利| 国产精品视频免费在线观看| 国产亚洲欧美日韩一区二区| 国产欧美日韩中文字幕在线| 亚洲国产福利在线| 色偷偷偷亚洲综合网另类| 日韩在线视频国产| 亚洲激情视频在线| 欧美日韩国产中字| 日韩中文av在线| 欧美在线视频网| 亚洲国产精品久久久久久| 久久久免费av| 国产亚洲精品va在线观看| 92版电视剧仙鹤神针在线观看| 亚洲欧美中文字幕在线一区| 91成人在线播放| 91精品在线观| 久久国产精品偷| 国产一区二区三区在线免费观看| 成人黄色在线播放| 国产成人精品在线| 在线观看视频99| 亚洲欧美中文在线视频| 性日韩欧美在线视频| 国产不卡av在线免费观看| 久久伊人色综合| 亚洲视频777| 亚洲精品美女在线观看播放| 亚洲第一av网站| 国产97免费视| 狠狠躁夜夜躁人人爽天天天天97| 国产中文字幕亚洲| 国产激情视频一区| 欧美性xxxx18| 日韩中文有码在线视频| 色综合伊人色综合网站| 97久久超碰福利国产精品…| 成人午夜激情免费视频| 久久久精品视频在线观看| 欧美黄色免费网站| 国产日韩精品综合网站| 97在线免费视频| 91av视频在线| 欧美色道久久88综合亚洲精品| 97av在线播放| 欧美日韩色婷婷| 亚洲人成亚洲人成在线观看| 91日本视频在线| 亚洲乱码国产乱码精品精| 亚洲aa在线观看| 久久国产精品久久久久久久久久| 这里精品视频免费| 亚洲自拍偷拍视频| 日韩在线观看免费高清| 亚洲国产毛片完整版| 国产精品麻豆va在线播放| 最近日韩中文字幕中文| 蜜臀久久99精品久久久无需会员| 亚洲国产一区自拍| 欧美性xxxx在线播放| 国产精品入口免费视频一| 97国产成人精品视频| 欧洲成人在线视频| 这里只有精品在线播放| 久久偷看各类女兵18女厕嘘嘘| 亚洲色无码播放| 欧美久久精品一级黑人c片| 欧美在线观看网址综合| 成人网址在线观看| 国产精品美女www爽爽爽视频| 亚洲精品www久久久久久广东| 国产69久久精品成人| 日韩精品中文字幕视频在线| 国产精品老牛影院在线观看| 中国日韩欧美久久久久久久久| 欧美伊久线香蕉线新在线| 国产精品a久久久久久| 国产大片精品免费永久看nba| 日韩欧美亚洲综合| 欧美日韩色婷婷| 精品中文字幕在线| 亚洲999一在线观看www| 色yeye香蕉凹凸一区二区av| 成人欧美一区二区三区在线| 亚洲成avwww人| 精品综合久久久久久97| 亚洲欧美国产高清va在线播| 国产精品国模在线| 亚洲黄色www网站| 日韩电影免费观看在线观看| 国产精品美女午夜av| 成人网在线免费看| 亚洲欧美一区二区三区四区| zzijzzij亚洲日本成熟少妇| 中文字幕亚洲欧美日韩在线不卡| 在线视频欧美日韩精品| 日本精品va在线观看| 在线电影欧美日韩一区二区私密| 色av吧综合网| 中文字幕亚洲综合久久| 国产成人综合av| 日韩视频欧美视频| 欧美亚洲成人网| 日韩福利伦理影院免费| 久久精品国产69国产精品亚洲| 91精品国产色综合久久不卡98口| 日韩资源在线观看| 精品久久久久久国产| 国产一区二区三区视频| 国内精品小视频在线观看| 国产成人精品午夜| 狠狠色香婷婷久久亚洲精品| 国产亚洲精品激情久久| 国产精品久久久久免费a∨| 日韩高清电影好看的电视剧电影| 日韩av免费看| 欧美午夜www高清视频| 欧美日韩中文字幕| 色综合色综合久久综合频道88| 国产欧美精品va在线观看| 国产美女精品视频免费观看| 一区二区三区无码高清视频| 国产精品27p| 粉嫩老牛aⅴ一区二区三区| 欧美亚洲视频一区二区| 亚洲a级在线观看| 欧美日韩亚洲系列| 国产偷国产偷亚洲清高网站| 2019国产精品自在线拍国产不卡| 亚洲午夜女主播在线直播| 国产精品视频最多的网站| 亚洲精品久久久久久久久久久久久| 5566成人精品视频免费| 亚洲电影成人av99爱色| 国产精品久久久久久久久久久久久| 欧美一级淫片videoshd| 欧美日韩视频免费播放| 隔壁老王国产在线精品|