iOS - 获取手机中所有图片

  1 #import <AssetsLibrary/AssetsLibrary.h>
  3
  4
  5 /**
  6  *  ALAssetsLibrary.h 代表资源库(所有的视频,照片)
  7     ALAssetsGroup.h   代表资源库中的相册
  8     ALAsset.h         代表相册中一个视频或者一张照片
  9     ALAssetRepresentation.h 代表一个资源的描述,可以获取到原始图片
 10  */
 11
 12 @interface ViewController ()
 13
 14 @property (weak, nonatomic) IBOutlet UICollectionView *collectionView;
 15
 16 @property (nonatomic,strong)NSMutableArray *array;
 17 @end
 18
 19 @implementation ViewController{
 20
 21     ALAssetsLibrary *library;
 22
 23 }
 24
 25 - (void)viewDidLoad {
 26     [super viewDidLoad];
 27
 28     //创建可变数组,存储资源文件
 29     _array = [NSMutableArray array];
 30
 31     //创建资源库,用于访问相册资源
 32     library = [[ALAssetsLibrary alloc] init];
 33
 34     //遍历资源库中所有的相册,有多少个相册,usingBlock会调用多少次
 35     [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
 36
 37         //如果存在相册,再遍历
 38         if (group) {
 39
 40             //遍历相册中所有的资源(照片,视频)
 41            [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
 42
 43                /*
 44                 资源的索引
 45                if (index == 2) {
 46
 47                 //停止遍历
 48                    *stop = YES;
 49                }
 50                 */
 51
 52                if (result) {
 53                    //将资源存储到数组中
 54                    [_array addObject:result];
 55                }
 56
 57            }];
 58         }
 59
 60         //刷新_collectionView reloadData;
 61          [_collectionView reloadData];
 62
 63     } failureBlock:^(NSError *error) {
 64
 65         NSLog(@"访问失败");
 66     }];
 67
 68 }
 69
 70 #pragma mark -UICollectionViewDelegate
 71
 72 //行的个数
 73 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
 74
 75
 76     return _array.count;
 77
 78 }
 79
 80 //创建UICollectionViewCell
 81 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
 82
 83     //如果单元格是在故事版中画出来的,不需要注册,需要在单元格中指定标识符
 84     UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
 85
 86     //取得图片视图
 87     UIImageView *imgView = (UIImageView *)[cell.contentView viewWithTag:1];
 88
 89     //取出对应的资源数据
 90      ALAsset *result =_array[indexPath.row];
 91
 92     //获取到缩略图
 93     CGImageRef cimg = [result thumbnail];
 94
 95     //转换为UIImage
 96     UIImage *img = [UIImage imageWithCGImage:cimg];
 97
 98     //显示图片
 99     imgView.image = img;
100
101     /**
102      *  获取到原始图片
103      ALAssetRepresentation *presentation = [result defaultRepresentation];
104
105     CGImageRef resolutionImg = [presentation fullResolutionImage];
106      */
107
108     return cell;
109
110 }
111
112 //单元格大小
113 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
114
115     return CGSizeMake(70, 70);
时间: 2024-12-25 07:36:06

iOS - 获取手机中所有图片的相关文章

IOS 获取手机ip地址

#include <ifaddrs.h> #include <arpa/inet.h> - (NSString *)getIPAddress {          NSString *address = @"error";     struct ifaddrs *interfaces = NULL;     struct ifaddrs *temp_addr = NULL;     int success = 0;          // retrieve th

获取手机中所有已安装的应用,并判断是否系统应用

//获取手机中所有已安装的应用,并判断是否系统应用 ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); //用来存储获取的应用信息数据,手机上安装的应用数据都存在appList里 List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);   for(int i = 0; i < packages.size(); i++

【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 [java] view plaincopyprint? PackageManager packageManager = this.getPackageManager(); List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0); 通过以上方法,可以得到手机中安装的所有应用程序,既包括了手动安装的apk包的信

ios 获取手机相关的信息

获取手机信息      应用程序的名称和版本号等信息都保存在mainBundle的一个字典中,用下面代码可以取出来 //获取版本号 NSDictionary *infoDict = [[NSBundle mainBundle]infoDictionary]; NSString *versionNum = [infoDict objectForKey:@"CFBundleVersion"];//版本号 NSString *appName = [infoDict objectForKey:

iOS获取手机相关信息

iOS具体的设备型号: #include <sys/types.h> #include <sys/sysctl.h> - (void)test { //手机型号. size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = (char*)malloc(size); sysctlbyname("hw.machine", machine, &

Android_(传感器)获取手机中的传感器

传感器是一种检测装置,能够感受被测量的信息,并能将检测和感受到的信息按一定规律变换成电信号或其它所需形式的信息输出 Android操作系统中内置了很多的传感器(物理装置),能够探测.感受外界的信号.物理条件,并将得到的信息传递给其它的装置. 例如在部分游戏或软件可以自动识别屏幕的横竖屏来改变屏幕显示的布局 下面是Android支持的几种传感器: 加速传感器      Sensor.TYPE_ACCELEROMETER 陀螺仪传感器     Sensor.TYPE_GYROSCOPE 环境光仪传感

iOS 获取手机当前所连接的网络的IP地址

1首先要在当前所在的类导入这几个头文件: #include <arpa/inet.h>#include <netdb.h>#include <net/if.h>#include <ifaddrs.h>#import <dlfcn.h> 2具体代码的实现: //获取手机的网络的ip地址- (NSString *)getIPAddress{ BOOL success; struct ifaddrs * addrs; const struct ifad

iOS 获取字符串中的所有数字

NSString * str = @"123/21年123" NSCharacterSet *nonDigitCharacterSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; //获取字符串中的数字 str = [[str componentsSeparatedByCharactersInSet:nonDigitCharacterSet] componentsJoinedByString:@"&qu

3.IOS获取手机与屏幕属性

在次之前,补充个内容.UIDevice是无法获得具体的设备型号的. 要获得设备型号,比如(iphone 4s, iphone5)这样的,要通过这样的办法. 1.引入头文件. #include <sys/types.h> #include <sys/sysctl.h> 2.获取型号             //手机型号.             size_t size;             sysctlbyname("hw.machine", NULL, &a