• 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

  • 相关阅读:
    多线程GCD(二)
    多线程
    Runtime & Runloop
    MTK android 重启测试脚本
    ubuntu samba 配置简介
    Gerrit使用简介
    MTK andorid从底层到上层添加驱动
    MTK GPIO 新增变量配置
    MT6755 使用R63350 IC 出现唤醒概率性闪白,并导致ESD FAIL
    android L版本AAL新架构
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026899.html
Copyright © 2020-2023  润新知