利用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 = [[UIImageViewalloc] initWithFrame:CGRectMake(100,100, 100, 100)];
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/-