IOS-AssetsLibrary(相册)框架介绍

AssetsLibrary框架介绍:

AssetsLibrary框架包含了ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation 五个类,提供从相册中读取相片、将相片保存到相册,获取相册信息,增加相册等功能。
注意:在一个类中多处使用到ALAssetsLibrary框架,最好定义ALAssetsLibrary类属性,因为,如果ALAssetsLibrary类的实例释放掉了,这个ALAssetsLibrary类对应的ALAssetsGroup也会不存在.


ALAssetsLibrary


ALAssetsLibrary类介绍

可以说,是一个桥梁把。连接了我们应用程序和相册之间的访问。
ALAssetsLibrary提供了我们对iOS设备中的相片、视频的访问。

ALAssetsLibrary被封装在 框架中。所以,我们在使用时,需要引入该框架。

需添加AssetsLibrary.framework
然后引入头文件

#import<AssetsLibrary/AssetsLibrary.h>

或者

{

#import <AssetsLibrary/ALAsset.h>

#import <AssetsLibrary/ALAssetsLibrary.h>

#import <AssetsLibrary/ALAssetsGroup.h>

#import <AssetsLibrary/ALAssetRepresentation.h>

}

ALAssetsLibrary类方法介绍

//添加一个group,成功后查看一些信息  
     addAssetsGroupAlbumWithName:(NSString *) resultBlock:  failureBlock: 

//通过url地址在相册资源中获取该地址的资源文件ALAsset,有可能是相片或视频 
    assetForURL: resultBlock: failureBlock:

//通过url地址获取相册资源中的一个相册  
    photolibrary groupForURL: resultBlock: failureBlock:

//根据选择的类型遍历相册资源中的相对应类型的所有相册,其中stop行参是指针,表示是否停止迭代,当赋值为false则停止 
    enumerateGroupsWithTypes: usingBlock: failureBlock:

//保存图片到系统默认的相册中,使用nsdata的形式,并返回照片的url地址  
[_library writeImageDataToSavedPhotosAlbum:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {  

}];  

//保存图片到系统默认的相册中,使用cgimageref的形式,并返回照片的url地址  
[_library writeImageToSavedPhotosAlbum:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {  

}]; 

//保存图片到系统默认的相册中,使用cgimageref的形式,并且选择图片以什么旋转方向的形式保存,并返回照片的url地址  

//        typedef enum {  
//        ALAssetOrientationUp,            // default orientation  
//        ALAssetOrientationDown,          // 180 deg rotation  
//        ALAssetOrientationLeft,          // 90 deg CCW  
//        ALAssetOrientationRight,         // 90 deg CW  
//        ALAssetOrientationUpMirrored,    // as above but image mirrored along other axis. horizontal flip  
//        ALAssetOrientationDownMirrored,  // horizontal flip  
//        ALAssetOrientationLeftMirrored,  // vertical flip  
//        ALAssetOrientationRightMirrored, // vertical flip  
//        } ALAssetOrientation;  

UIImage* image = [UIImage imageNamed:@"test.png"];  
[_library writeImageToSavedPhotosAlbum:[image CGImage] orientation:ALAssetOrientationLeft completionBlock:^(NSURL *assetURL, NSError *error) {  
NSLog(@"save image:%@",assetURL);  
}];  



ALAssetsgroup


ALAssetsgroup 类介绍

ALAssetsgroup 就是相册的类


ALAssetsgroup 方法介绍

Enumerating Assets(遍历资源)

– enumerateAssetsUsingBlock:(用一个block来遍历组里的资源)
– enumerateAssetsWithOptions:usingBlock:(在枚举选项的条件下,用一个block来遍历组里的资源)
– enumerateAssetsAtIndexes:options:usingBlock:(在枚举选项的条件下,用一个block来遍历组里特定index的资源)


​Adding Assets(添加资源)
– addAsset:(添加一个已存在的asset到接收者。返回yes成功;反之,失败。)
  editable  property(指示程序是否可以编辑组,只读属性,打印看了一下,系统自带的是不能编辑的,其它可以编辑)


Filtering(过滤)
– numberOfAssets(返回组过滤器条件下的资源个数,若没有设置过滤器,则返回组里的资源个数)
– setAssetsFilter:(设置组的过滤器)


Accessing Properties(访问属性)
– valueForProperty:(通过组属性名称,获取组属性:组名称,组类型,组永久性ID,组URL)
– posterImage(组的封面)



ALAsset


ALAsset 类介绍

ALAsset可以看成是一个你选择的文件的包装类,从中可以取到一个叫做ALAssetPresentation的对象(defaultRepresentation),然后如果是图片的话里面可以得到全屏图、全尺寸图、metadata、size等等有用的信息。


ALAsset类中方法介绍


Asset Properties
– valueForProperty:
  (1.ALAssetPropertyType 资源的类型(照片,视频)
   2.ALAssetPropertyLocation 资源地理位置(无位置信息返回null3.ALAssetPropertyDuation 播放时长(照片返回ALErorInvalidProperty)
   4.ALAssetPropertyOrientation 方向(共有8个方向,参见:ALAssetOrientation)
   5.ALAssetPropertyDate 拍摄时间(包含了年与日时分秒)
   6.ALAssetPropertyRepresentations 描述(打印看了下,只有带后缀的名称)
   7.ALAssetPropertyURLs(返回一个字典,键值分别是文件名和文件的url)
   8.ALAssetPropertyAssetURL 文件的url )
  editable  property(指示资源是否可以编辑,只读属性)
  originalAsset  property(原始资源。若没有保存修改后资源,则原始资源为nil)

Accessing Representations
– defaultRepresentation
– representationForUTI:
– thumbnail(小正方形的缩略图)
– aspectRatioThumbnail(按原始资源长宽比例的缩略图)

Setting New Image and Video Data
– setImageData:metadata:completionBlock: 
用给定的image data 替换接收者的image data。
– setVideoAtPath:completionBlock: 
用给定的URL的video 替换接收者的video data。
Saving to the Saved Photos Album
– writeModifiedImageDataToSavedPhotosAlbum:metadata:completionBlock:
保存image data到Saved Photos album
– writeModifiedVideoAtPathToSavedPhotosAlbum:completionBlock: 
 保存video到Saved Photos album的指定路径



ALAssetRepresentation


ALAssetRepresentation类介绍

ALAssetRepresentation对象封装了一个给定ALAsset对象的陈述。一个在资源库中给定的asset可能有不止一个陈述。比如,如果一个相机提供RAW和JPEG格式的图像版本,asset将有两个陈述版本,一个是RAW的,一个是JPEG的。


ALAssetRepresentation方法介绍


Getting Image Representations
– CGImageWithOptions:
– fullResolutionImage(完全分辨率的图片)
– fullScreenImage(满屏的图片)

Getting Image Attributes
– orientation(文件方向)
– scale(长宽比例)
– filename(文件名字)

Getting Raw Data
– size(文件尺寸,以byte为单位)
– getBytes:fromOffset:length:error:

Getting Metadata
– UTI
– metadata

Getting an URL
– url



使用

    ALAssetsLibrary *photolibrary = [[ALAssetsLibrary alloc] init];
    [photolibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        //提取group中的数据信息
        if (group) {
            [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
                if (result) {
                    //获取缩略图
                    UIImage *image = [UIImage imageWithCGImage:[result thumbnail]];
                    [self.thumbnailArray addObject:[image copy]];
                    //获取原图
                    image = [UIImage imageWithCGImage:[[result defaultRepresentation] fullScreenImage]];
                    [self.orignalArray addObject:[image copy]];

                }
            }];
        }
    } failureBlock:^(NSError *error) {
        NSLog(@"获取图片失败");
    }];



转载地址:

http://www.mobile-open.com/2014/2867.html

http://blog.csdn.net/u011439689/article/details/38454987

原文地址:https://www.cnblogs.com/AbeDay/p/5026899.html