系统相册和照相机

利用IOS的 <AssetsLibrary/AssetsLibrary.h> 框架访问系统相册 

在他下面实际上只有下面5个头文件

#import<AssetsLibrary/ALAsset.h>//获取到图片

#import<AssetsLibrary/ALAssetsFilter.h> //相册的类,可以获取相册的图片

#import<AssetsLibrary/ALAssetsGroup.h>//实现查看相册列表,增加相册,保存图片到相册

#import<AssetsLibrary/ALAssetsLibrary.h> //遍历拿到图片

#import<AssetsLibrary/ALAssetRepresentation.h>//获取单张图片的详细资源


ALAssetsLibrary.h:   获取系统相册 - 通过Block返回ALAssetsGroup


ALAssetsGroup.h:

setAssetsFilter//设置过滤器

numberOfAssets//查看相册个数

posterImage//显示 进入相册就可以看到的照片. 也就是最近的照片.

ALAssetsGroupPropertyName//查看相册名字

ALAssetsGroupPropertyType//查看相册类型

ALAssetsGroupPropertyPersistentID//查看相册ID

ALAssetsGroupPropertyURL//查看相册地址

//属性,方法介绍

BOOL editable//ALAssetsGroup组是否可编辑

- (BOOL)addAsset:(ALAsset *)asset //将现有的ALAsset添加到ALAssetsGroup组, 前提是editable必须是YES.
 

// ALAssetsGroupAll: 表示读取设备上所有的相片和用设备摄像头拍摄的视屏

[self.assetsLibrary enumerateGroupsWithTypes: ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group,BOOL *stop) {

        

        // group 就存储的是 拿到的资源 - 图片

// 拿到资源之后,就可以根据前面的类提供的方法,解析出自己需要的所有信息.

if (group) {

            //设置过滤器,只需要获取设备里面的所有照片.此处按自己需求过滤.

            [group setAssetsFilter:[ALAssetsFilterallPhotos]];

            

            // 判断数量是由于: 过滤之后 group可能为空

            if (group.numberOfAssets >0) {


                ALAssetsGroup *group = [assetsLibraryslastObject];

                NSString  *assetsName = [groupvalueForProperty:ALAssetsGroupPropertyName];

                NSString  *assetsType = [groupvalueForProperty:ALAssetsGroupPropertyType];

                NSString  *assetsPersistentID = [groupvalueForProperty:ALAssetsGroupPropertyPersistentID];

                NSString  *assetsURL = [groupvalueForProperty:ALAssetsGroupPropertyURL];

//获取组的数量和默认的image

group.numberOfAssets, group.posterImage

UIImageView *imageView = [[UIImageViewallocinitWithFrame:CGRectMake(100,100100100)];

                imageView.image = [UIImageimageWithCGImage:group.posterImage];

                [self.viewaddSubview:imageView];

//

                NSLog(@"assetsName:%@, assetsType:%@, assetsPersistentID:%@, assetsURL:%@, %ld, %@", assetsName, assetsType, assetsPersistentID, assetsURL, group.numberOfAssets, group.posterImage);


         //ALAssetsGroup回调Block

- (void)enumerateAssetsUsingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock 

- (void)enumerateAssetsWithOptions:(NSEnumerationOptions)options usingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock 

- (void)enumerateAssetsAtIndexes:(NSIndexSet *)indexSet options:(NSEnumerationOptions)options usingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock 


            }

        }

    } failureBlock:^(NSError *error) {

        

    }];


//保存图片到系统相册

writeImageToSavedPhotosAlbum

writeImageDataToSavedPhotosAlbum

writeVideoAtPathToSavedPhotosAlbum


UIImageWriteToSavedPhotosAlbum//也可以保存图片到系统相册,但他不是ALAssetsLibrary里面的方法


videoAtPathIsCompatibleWithSavedPhotosAlbum//保存视频到相册


//ALAssetsGroup.h

[group enumerateAssetsUsingBlock:^(ALAsset *result,NSUInteger index,BOOL *stop) //详细介绍

ALAsset.h 


  CGImageRef thumbnailImageRef = [result thumbnail];

NSLog(@"thumbnailImageRef= %@", [UIImage imageWithCGImage:thumbnailImageRef]);

            

NSString *type = [result valueForProperty:ALAssetPropertyType];

if ([type isEqualToString:ALAssetTypePhoto]) {


}


ALAssetPropertyType//获取到的资源类型

ALAssetPropertyLocation//照片位置

ALAssetPropertyDuration//视频时间

ALAssetPropertyDate//拍摄日期

ALAssetPropertyOrientation//照片方向-参见ALAssetOrientation

ALAssetPropertyRepresentations//图片的资源信息

ALAssetPropertyURLs//返回一个字典(key/value 文件名和文件的url)

ALAssetPropertyAssetURL//文件的url

        NSString *Location = [result valueForProperty:ALAssetPropertyLocation];

        NSString *Duration = [result valueForProperty:ALAssetPropertyDuration];           

        NSString *Orientation = [resultvalueForProperty:ALAssetPropertyOrientation];        

        NSString *Representations = [resultvalueForProperty:ALAssetPropertyRepresentations];       

        NSString *URLs = [result valueForProperty:ALAssetPropertyURLs];

        NSString *AssetURL = [result valueForProperty:ALAssetPropertyAssetURL];

defaultRepresentation- 属于ALAssetRepresentation类

ALAssetRepresentation *representation = result.defaultRepresentation;//图片的详细资源信息

[representation UTI] //图片的唯一标示符

[representation dimensions]; //获取资源图片的长宽

            [representation size]; //图片资容量大小

            [representation metadata]; //图片资源源数据

            [representation orientation]; //旋转方向

[representation scale ];//缩放倍数

[representationfilename];图片名字


======================以上就是AssetsLibrary框架的所有内容了======================

ios9之后,就变成 #import <Photos/Photos.h>库了. 不过他们的用法是想通的


后面会奉上demo程序,敬请大家期待.


此博客参考自: http://www.coderyi.com/archives/424


自定义相册demo已上传至github : https://github.com/zhoupengju/-


github地址 : https://github.com/zhoupengju/-



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值