• ALAssetsLibrary详解


     

    转载自:  http://blog.csdn.net/kingsley_cxz/article/details/9165951

    ALAssetsLibrary类是代表系统中整个资源库,使用它可以访问资源库中的资源和保存照片,视频等功能。

        _library = [[ALAssetsLibrary alloc]init];
        //判断当前应用是否能访问相册资源
        /*
         typedef NS_ENUM(NSInteger, ALAuthorizationStatus) {
         ALAuthorizationStatusNotDetermined = 0, 用户尚未做出了选择这个应用程序的问候
         ALAuthorizationStatusRestricted,        此应用程序没有被授权访问的照片数据。可能是家长控制权限。

         ALAuthorizationStatusDenied,            用户已经明确否认了这一照片数据的应用程序访问.
         ALAuthorizationStatusAuthorized         用户已授权应用访问照片数据.
         }
         */
        int author = [ALAssetsLibrary authorizationStatus];
        NSLog(@"author type:%d",author);
        //关闭监听共享照片流产生的频繁通知信息
        [ALAssetsLibrary disableSharedPhotoStreamsSupport];
        
        //创建一个相册到相册资源中,并通过block返回创建成功的相册ALAssetsGroup
        [_library addAssetsGroupAlbumWithName:@"test" resultBlock:^(ALAssetsGroup *group) {
            //NSString *const ALAssetsGroupPropertyName;
            //NSString *const ALAssetsGroupPropertyType;
            //NSString *const ALAssetsGroupPropertyPersistentID;
            //NSString *const ALAssetsGroupPropertyURL;
            //查看相册的名字
            NSLog(@"ALAssetsGroupPropertyName:%@",[group valueForProperty:ALAssetsGroupPropertyName]);
            //查看相册的类型
            NSLog(@"ALAssetsGroupPropertyType:%@",[group valueForProperty:ALAssetsGroupPropertyType]);
            //查看相册的存储id
            NSLog(@"ALAssetsGroupPropertyPersistentID:%@",[group valueForProperty:ALAssetsGroupPropertyPersistentID]);
            //查看相册存储的位置地址
            NSLog(@"ALAssetsGroupPropertyURL:%@",[group valueForProperty:ALAssetsGroupPropertyURL]);
            groupURL = [group valueForProperty:ALAssetsGroupPropertyURL];

        } failureBlock:^(NSError *error) {
            
        }];


    新添加了一个名为test的相册


        [NSThread sleepForTimeInterval:0.5];
        //通过url地址在相册资源中获取该地址的资源文件ALAsset,有可能是相片或视频
        [_library assetForURL:[NSURL URLWithString:@""] resultBlock:^(ALAsset *asset) {
            /*
             NSString *const ALAssetPropertyType;
             NSString *const ALAssetPropertyLocation;
             NSString *const ALAssetPropertyDuration;
             NSString *const ALAssetPropertyOrientation;
             NSString *const ALAssetPropertyDate;
             NSString *const ALAssetPropertyRepresentations;
             NSString *const ALAssetPropertyURLs;
             NSString *const ALAssetPropertyAssetURL;
             */
            //查看资源的地理位置信息
            NSLog(@"ALAssetPropertyLocation:%@",[asset valueForProperty:ALAssetPropertyLocation]);
            //如果资源是视频,查看视频的时长
            NSLog(@"ALAssetPropertyDuration:%@",[asset valueForProperty:ALAssetPropertyDuration]);
            //查看资源的方向,图片的旋转方向
            NSLog(@"ALAssetPropertyOrientation:%@",[asset valueForProperty:ALAssetPropertyOrientation]);
            //查看资源的创建时间
            NSLog(@"ALAssetPropertyDate:%@",[asset valueForProperty:ALAssetPropertyDate]);
            //查看资源的描述信息
            NSLog(@"ALAssetPropertyRepresentations:%@",[asset valueForProperty:ALAssetPropertyRepresentations]);
            NSLog(@"ALAssetPropertyURLs:%@",[asset valueForProperty:ALAssetPropertyURLs]);
            //查看资源的url路径
            NSLog(@"ALAssetPropertyAssetURL:%@",[asset valueForProperty:ALAssetPropertyAssetURL]);
        } failureBlock:^(NSError *error) {
            
        }];
        //通过url地址获取相册资源中的一个相册
        [_library groupForURL:groupURL resultBlock:^(ALAssetsGroup *group) {
            NSLog(@"ALAssetsGroupPropertyName:%@",[group valueForProperty:ALAssetsGroupPropertyName]);
        } failureBlock:^(NSError *error) {
        
        }];
        //根据选择的类型遍历相册资源中的相对应类型的所有相册,其中stop行参是指针,表示是否停止迭代,当赋值为false则停止
        /*
         enum {
         ALAssetsGroupLibrary        = (1 << 0),
         ALAssetsGroupAlbum          = (1 << 1),
         ALAssetsGroupEvent          = (1 << 2),
         ALAssetsGroupFaces          = (1 << 3),
         ALAssetsGroupSavedPhotos    = (1 << 4),
         ALAssetsGroupPhotoStream    = (1 << 5),
         ALAssetsGroupAll            = 0xFFFFFFFF,
         };
         */
        [_library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
            NSLog(@"group name:%@",[group valueForProperty:ALAssetsGroupPropertyName]);
        } failureBlock:^(NSError *error) {
            
        }];
        //保存图片到系统默认的相册中,使用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);
        }];

  • 相关阅读:
    LODOP设置打印份数及是否逐份输出
    LODOP中table自动分页补线加border
    PS弧形边缘的去黑色背景色
    【解决篇】映美FP-530K+打印发票卡纸,色带安装问题
    LODOP打印项水平居中
    C-LODOP的端口和网站的端口
    java---interrupt、interrupted和isInterrupted的区别
    java------守护线程与非守护线程
    java----EL表达式
    java----IO和NIO的区别
  • 原文地址:https://www.cnblogs.com/allanliu/p/4213319.html
Copyright © 2020-2023  润新知