iOS 相冊 相機

轉載自:http://my.oschina.net/u/1378445/blog/333052 ALAssetsLibrary類 ALAssetsGroup ALAsset類

由於博客遷移至www.coderyi.com,文章請看http://www.coderyi.com/archives/424

該框架下有幾個類,ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation。


ALAssetsLibrary類

ALAssetsLibrary類可以實現查看相冊列表,增加相冊,保存圖片到相冊等功能。

例如enumerateGroupsWithTypes方法列舉所有相冊。

ALAssetsGroup

ALAssetsGroup就是相冊的類,可以通過valueForProperty方法查看不同屬性的值,如:ALAssetsGroupPropertyName,相冊名。

ALAssetsGroup類有幾個方法,posterImage方法就是相冊的封面圖片,numberOfAssets方法獲取該相冊的圖片視頻數量,可以通過enumerateAssetsUsingBlock方法列舉出所有照片。

ALAssetsGroup 可以使用setAssetsFilter:(ALAssetsFilter *)filter過濾照片或者視頻等。


首先是獲取所有相冊,通過ALAssetsLibrary的實例方法得到ALAssetsGroup類數組。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ALAssetsLibrary *assetsLibrary;
 NSMutableArray *groupArray;
  assetsLibrary = [[ALAssetsLibrary alloc] init];
    groupArray=[[NSMutableArray alloc] initWithCapacity:1];
    [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        if (group) {
            [groupArray addObject:group];
         
            //            通過這個可以知道相冊的名字,從而也可以知道安裝的部分應用
            //例如 Name:柚子相機, Type:Album, Assets count:1
            NSLog(@"%@",group);
        }
    } failureBlock:^(NSError *error) {
        NSLog(@"Group not found!\n");
    }];



ALAsset類

ALAsset類也可以通過valueForProperty方法查看不同屬性的值,如:ALAssetPropertyType,asset的類型,有三種ALAssetTypePhoto, ALAssetTypeVideo or ALAssetTypeUnknown。

另外還可以通過該方法獲取ALAssetPropertyLocation(照片位置),ALAssetPropertyDuration(視頻時間),ALAssetPropertyDate(照片拍攝日期)等。

可以通過thumbnail方法就是獲取該照片。


根據相冊獲取該相冊下所有圖片,通過ALAssetsGroup的實例方法得到ALAsset類數組。

   

?
1
2
3
4
5
6
7
8
  [_group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
        if (result) {
            [imageArray addObject:result];
            NSLog(@"%@",result);
             iv.image=[UIImage imageWithCGImage: result.thumbnail];
NSString *type=[result valueForProperty:ALAssetPropertyType];
        }
    }];

ALAssetRepresentation類

ALAsset類有一個defaultRepresentation方法,返回值是ALAssetRepresentation類,該類的作用就是獲取該資源圖片的詳細資源信息。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//
//獲取資源圖片的詳細資源信息
ALAssetRepresentation* representation = [asset defaultRepresentation];
//獲取資源圖片的長寬
CGSize dimension = [representation dimensions];
 //獲取資源圖片的高清圖
[representation fullResolutionImage];
//獲取資源圖片的全屏圖
[representation fullScreenImage];
//獲取資源圖片的名字
NSString* filename = [representation filename];
NSLog(@"filename:%@",filename);
//縮放倍數
[representation scale];
//圖片資源容量大小
[representation size];
//圖片資源原數據
 [representation metadata];
//旋轉方向
[representation orientation];
 //資源圖片url地址,該地址和ALAsset通過ALAssetPropertyAssetURL獲取的url地址是一樣的
NSURL* url = [representation url];
NSLog(@"url:%@",url);
//資源圖片uti,唯一標示符
NSLog(@"uti:%@",[representation UTI]);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章