zoukankan      html  css  js  c++  java
  • iOS相册(多张图片选取)

    (一)iOS4.0后9.0之前:AssetsLibrary.framework
    该框架下有几个类,ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation。
    (1) ALAssetsLibrary类:
    ALAssetsLibrary类可以实现查看相册列表,增加相册,保存图片到相册等功能。
    例如enumerateGroupsWithTypes方法列举所有相册。
    
    (2) ALAssetsGroup
    *ALAssetsGroup就是相册的类,可以通过valueForProperty方法查看不同属性的值,如:ALAssetsGroupPropertyName,相册名。
    *ALAssetsGroup类有几个方法,posterImage方法就是相册的封面图片,numberOfAssets方法获取该相册的图片视频数量,可以通过enumerateAssetsUsingBlock方法列举出所有照片。
    *ALAssetsGroup 可以使用setAssetsFilter:(ALAssetsFilter *)filter过滤照片或者视频等。
    首先是获取所有相册,通过ALAssetsLibrary的实例方法得到ALAssetsGroup类数组。
       ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
        NSMutableArray *groupArray = [NSMutableArray array];
        [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
            if (group) {
                [groupArray addObject:group];
                
                //通过这个可以知道相册的名字,从而也可以知道安装的部分应用
                NSLog(@"%@",group);
            }
        } failureBlock:^(NSError *error) {
            NSLog(@"Group not found!
    ");
        }];
    (3) ALAsset
    *ALAsset类也可以通过valueForProperty方法查看不同属性的值,如:ALAssetPropertyType,asset的类型,有三种ALAssetTypePhoto, ALAssetTypeVideo or ALAssetTypeUnknown。
    *另外还可以通过该方法获取ALAssetPropertyLocation(照片位置),ALAssetPropertyDuration(视频时间),ALAssetPropertyDate(照片拍摄日期)等。
    可以通过thumbnail方法就是获取该照片。
    *根据相册获取该相册下所有图片,通过ALAssetsGroup的实例方法得到ALAsset类数组。
     [_group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
            if (result) {
                [imageArray addObject:result];
                NSLog(@"%@",result);
                 iv.image=[UIImage imageWithCGImage: result.thumbnail];
    NSString *type=[result valueForProperty:ALAssetPropertyType];
            }
        }];
    
    
    (4) ALAssetsFilter:提供过滤照片或者视频的实例等。
    
    (5) ALAssetRepresentation
    ALAsset类有一个defaultRepresentation方法,返回值是ALAssetRepresentation类,该类的作用就是获取该资源图片的详细资源信息。
    //
    //获取资源图片的详细资源信息
    ALAssetRepresentation* representation = [asset defaultRepresentation];
    //获取资源图片的长宽
    CGSize dimension = [representation dimensions];
     //获取资源图片的高清图
    [representation fullResolutionImage];
    //获取资源图片的全屏图
    [representation fullScreenImage];
    //获取资源图片的名字
    NSString* filename = [representation filename];
    NSLog(@"filename:%@",filename);
    //缩放倍数
    [representation scale];
    //图片资源容量大小
    [representation size];
    //图片资源原数据
     [representation metadata];
    //旋转方向
    [representation orientation];
     //资源图片url地址,该地址和ALAsset通过ALAssetPropertyAssetURL获取的url地址是一样的
    NSURL* url = [representation url];
    NSLog(@"url:%@",url);
    //资源图片uti,唯一标示符
    NSLog(@"uti:%@",[representation UTI]);
    
    

    摘自:http://www.cnblogs.com/worldtraveler/p/4679210.html

    (二)iOS9之后:Photos.framework
    //xxxx
  • 相关阅读:
    《数据结构第一章复习》
    《图的基本操作》
    《矩阵的一些基本操作》
    <矩阵的基本操作:矩阵相加,矩阵相乘,矩阵转置>
    《两个二维数组(矩阵)相乘》
    C#隐藏与显示系统任务栏和开始菜单栏按钮
    C#通过窗体属性缩小一定尺寸时,无法再缩小窗体尺寸问题
    C#一个窗体调用另一个窗体的方法
    C#异步线程
    C#中MessageBox.Show问题(让提示窗口不显示在任务栏中)
  • 原文地址:https://www.cnblogs.com/LyChen/p/5551946.html
Copyright © 2011-2022 走看看