ALAssetLibrary
主要访问用户媒体库的资源
你可以使用ALAsset Library 去访问ios系统的图片和视频
注意:ALAsset Library在9.0之后被废弃,在 ios8.0和以后的版本提供了更好的框架来处理用户的照片库。
ALAsset
ALAsset对象标识一个系统的图片或者视频对象。
- (id)valueForProperty:(NSString )property;
返回property 对象的值
Property Keys
-
ALAssetPropertyType – 资源的类型 包括(ALAssetTypePhoto,ALAssetTypeVideo,ALAssetTypeUnknown)
-
ALAssetPropertyLocation – 资源的位置信息,返回cllocation对象
-
ALAssetPropertyDuration – 视频的时长 返回 nsnumber 对象,图片返回ALErrorInvalidProperty
-
ALAssetPropertyOrientation – 资源的方向
-
ALAssetPropertyDate – 资源的创建时间
-
ALAssetPropertyRepresentations --资源的表现形式(RAW,JEPG 等)
-
ALAssetPropertyURLs – 资源的位置标识 urls
-
ALAssetPropertyAssetURL – 资源的位置标识 url
@property(nonatomic, readonly, getter=isEditable) BOOL editable;
标识 alasset 是否可编辑
@property(nonatomic, readonly) ALAsset *originalAsset;
asset 的原始版本
- (ALAssetRepresentation *)defaultRepresentation;
返回默认的 asset 描述对象
- (ALAssetRepresentation *)representationForUTI:(NSString *)representationUTI;
返回给定ALAssetRepresentation类型的对象。
- (CGImageRef)thumbnail;
返回对象的缩略图
- (CGImageRef)aspectRatioThumbnail;
返回一个宽高比不变的缩略图
- (void)setImageData:(NSData *)imageData metadata:(NSDictionary *)metadata completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock;
用新的 imageDate 替换 asset 对象的图像数据
- (void)setVideoAtPath:(NSURL *)videoPathURL completionBlock:(ALAssetsLibraryWriteVideoCompletionBlock)completionBlock;
用新的 URL 的视频数据替换 asset 对象的视频数据
- (void)writeModifiedImageDataToSavedPhotosAlbum:(NSData *)imageData metadata:(NSDictionary *)metadata completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock;
将图像数据保存到相册
- (void)writeModifiedVideoAtPathToSavedPhotosAlbum:(NSURL *)videoPathURL completionBlock:(ALAssetsLibraryWriteVideoCompletionBlock)completionBlock;
将指定路径的视频保存到相册
ALAssetRepresentation
描述 asset 的一个类型的对象,一个 asset 可能包含多个 presentation 对象,如果摄像头提供 RAW 和 JPEG 类型的图片,则 asset 将有两个presentation,一个 RAW 和 JPEG
- (CGImageRef)CGImageWithOptions:(NSDictionary *)options;
返回完整的 CGImage 对象。
- (CGImageRef)fullResolutionImage;
返回asset的CGImage表示形式。
- (CGImageRef)fullScreenImage;
返回适合于显示全屏的表示形式的CGImage。
- (ALAssetOrientation)orientation;
返回Representation的方向
(ALAssetOrientationUp,
ALAssetOrientationDown,
ALAssetOrientationLeft,
ALAssetOrientationRight,
ALAssetOrientationUpMirrored,
ALAssetOrientationDownMirrored,
ALAssetOrientationLeftMirrored,
ALAssetOrientationRightMirrored。)
- (float)scale;
返回Representation的缩放比例
- (CGSize)dimensions;
返回Representation的维度
- (NSString *)filename;
返回在磁盘上的路径的文件名
- (long long)size;
返回文件的字节大小
- (NSUInteger)getBytes:(uint8_t *)buffer fromOffset:(long long)offset length:(NSUInteger)length error:(NSError **)error;
将指定范围的字节复制到缓冲区
- (NSString *)UTI;
返回Representation的UTI
- (NSDictionary *)metadata;
返回Representation元数据字典的字典。
- (NSURL *)url;
返回Representation的唯一路径url
ALAssetsFilter
ALAssetsFilter封装了文件筛选的标准
+ (ALAssetsFilter *)allAssets;
返回一个提供所有 asset 里面的筛选器在 assets group 里
+ (ALAssetsFilter *)allPhotos;
返回一个提供所有照片里面的筛选器在 assets group 里
+ (ALAssetsFilter *)allVideos;
返回一个提供所有视频里面的筛选器在 assets group 里
ALAssetsGroup
ALAssetsGroup 对象表示相册应用里面所有对象的有序集合,对象的数序与用户在照片看到的是相同的,一个 asset 可以属于多个 groups ALAssetsGroup相当于相簿 asset 是一个图片或者视频对象
AssetsGroup 是通过iTunes同步的,创建它是为了保存用户保存的照片,或者是在导入相机时创建的。您可以使用ALAssetsLibrary类将图像或视频保存到保存的照片组中,从而间接修改保存的照片组。
- (void)enumerateAssetsUsingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;
异步返回 group 里面的每一个 asset
- (void)enumerateAssetsWithOptions:(NSEnumerationOptions)options usingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;
异步返回 group 里面的每一个 asset option (
NSEnumerationConcurrent,NSEnumerationReverse)
- (void)enumerateAssetsAtIndexes:(NSIndexSet *)indexSet options:(NSEnumerationOptions)options usingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;
根据指定的 indexset 异步返回 group 里面的每一个 asset
- (BOOL)addAsset:(ALAsset *)asset;
在相簿里添加一个已经存在的 asset对象
@property(nonatomic, readonly, getter=isEditable) BOOL editable;
相簿是否可以编辑组。
- (NSInteger)numberOfAssets;
相簿里对象的数量
- (void)setAssetsFilter:(ALAssetsFilter *)filter;
设置相簿的过滤条件
- (id)valueForProperty:(NSString *)property;
返回相簿指定属性的值
- (CGImageRef)posterImage;
返回相册的海报图
typedef void (^ALAssetsGroupEnumerationResultsBlock)(ALAsset *result, NSUInteger index, BOOL *stop);
返回的对象的的块方法
Group Property Names
ALAssetsGroupPropertyName
ALAssetsGroupPropertyType
ALAssetsGroupPropertyPersistentID
ALAssetsGroupPropertyURL
ALAssetsLibrary
初始化方法
ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];
我是分割线--------
+ (ALAuthorizationStatus)authorizationStatus;
返回相册的访问权限
ALAuthorizationStatusNotDetermined
ALAuthorizationStatusRestricted
ALAuthorizationStatusDenied
ALAuthorizationStatusAuthorized
+ (void)disableSharedPhotoStreamsSupport;
禁用共享照片流通知和检索
- (void)assetForURL:(NSURL *)assetURL resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock;
调用指定的 URL 资源
- (void)enumerateGroupsWithTypes:(ALAssetsGroupType)types usingBlock:(ALAssetsLibraryGroupsEnumerationResultsBlock)enumerationBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock;
调用指定相册的返回的资源
- (void)writeVideoAtPathToSavedPhotosAlbum:(NSURL *)videoPathURL completionBlock:(ALAssetsLibraryWriteVideoCompletionBlock)completionBlock;
保存由给定URL标识的视频到已保存的相册。
- (BOOL)videoAtPathIsCompatibleWithSavedPhotosAlbum:(NSURL *)videoPathURL;
判定指定 URL 的视频是否可以保存到相册
- (void)writeImageToSavedPhotosAlbum:(CGImageRef)imageRef orientation:(ALAssetOrientation)orientation completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock;
将给定的图像保存到已保存的相册。
- (void)writeImageDataToSavedPhotosAlbum:(NSData *)imageData metadata:(NSDictionary *)metadata completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock;
将给定的图像数据写入相册。
- (void)writeImageToSavedPhotosAlbum:(CGImageRef)imageRef metadata:(NSDictionary *)metadata completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock;
将给定的图像数据写入相册。
- (void)addAssetsGroupAlbumWithName:(NSString *)name resultBlock:(ALAssetsLibraryGroupResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock;
创建一个相簿
- (void)groupForURL:(NSURL *)groupURL resultBlock:(ALAssetsLibraryGroupResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock;
根据相簿的 url 返回一个相簿的结果