`
liubo0_0
  • 浏览: 20228 次
社区版块
存档分类
最新评论

获取手机相册

 
阅读更多

关于获取 手机相片的帖子一堆。但是里面很多的内容都是互相copy,有些方法写的不清楚,我在这里给大家完善下,代码如下:

Oc代码
  1. dispatch_async(dispatch_get_main_queue(),^{
  2. @autoreleasepool
  3. {
  4. ALAssetsLibraryAccessFailureBlockfailureBlock=^(NSError*error)
  5. {
  6. NSLog(@"相册访问失败=%@",[errorlocalizedDescription]);
  7. if([error.localizedDescriptionrangeOfString:@"Globaldeniedaccess"].location!=NSNotFound)
  8. {
  9. NSLog(@"无法访问相册.请在'设置->定位服务'设置为打开状态.");
  10. }
  11. else
  12. {
  13. NSLog(@"相册访问失败.");
  14. }
  15. };
  16. ALAssetsGroupEnumerationResultsBlockgroupBlock=^(ALAsset*result,NSUIntegerindex,BOOL*stop)
  17. {
  18. if(result!=NULL)
  19. {
  20. if([[resultvalueForProperty:ALAssetPropertyType]isEqualToString:ALAssetTypePhoto])
  21. {
  22. NSLog(@"index=%d",index);
  23. //NSString*urlStr=[NSStringstringWithFormat:@"%@",result.defaultRepresentation.url];//图片的url
  24. UIImage*img=[UIImageimageWithCGImage:result.thumbnail];
  25. [photoArraddObject:img];
  26. }
  27. }
  28. };
  29. ALAssetsLibraryGroupsEnumerationResultsBlocklibraryGroupBlock=^(ALAssetsGroup*group,BOOL*stop)
  30. {
  31. NSLog(@"stop=%d",stop?1:0);
  32. if(group==nil)
  33. {
  34. NSLog(@"group==nil结束");
  35. }
  36. if(group!=nil){
  37. NSString*g=[NSStringstringWithFormat:@"%@",group];
  38. NSLog(@"%@",g);
  39. [groupenumerateAssetsUsingBlock:groupBlock];
  40. }
  41. };
  42. ALAssetsLibrary*library=[[ALAssetsLibraryalloc]init];
  43. [libraryenumerateGroupsWithTypes:ALAssetsGroupAll
  44. usingBlock:libraryGroupBlock
  45. failureBlock:failureBlock];
  46. }
  47. });

打印结果:

>> stop = 1

>> ALAssetsGroup - Name:QQ, Type:Album, Assets count:0

>> stop = 1

>> ALAssetsGroup - Name:Camera Roll, Type:Saved Photos, Assets count:65

>> index = 0

.

.

.

>> index = 64

>> stop = 1

>> ALAssetsGroup - Name:My Photo Stream, Type:Photo Stream, Assets count:772

>> index = 0

.

.

.

>> index = 771

>> stop = 1

>> group == nil结束

以上为全部的日志。

其实代码很简单,就是几个block块的定义和实现,按照如下步骤执行。

1、先弹出是否允许访问相册。点击允许后

2、执行libraryGroupBlock(可以截取和分割字符串,获取相册相关信息)

3、执行groupBlock (该相册的照片信息,index是从0开始的。)

4、再执行libraryGroupBlock(有多少本相册,执行多少次)

5、再执行groupBlock

6、一直到>> group == nil 的时候,才算结束。

注:

700多张相片,存在集合里面(缩略图)

内存变化:(执行前)



内存变化:(执行后)


时间变化:(700多张相片

第一次点击,450ms,第二次 250ms ,第三次 250ms

去掉:

Oc代码
  1. UIImage*img=[UIImageimageWithCGImage:result.thumbnail];
  2. [photoArraddObject:img];

第一次点击,400ms,第二次 200ms ,第三次 200ms

照片中还有一起其他的属性如下:

Oc代码
  1. //唯一ID?
  2. NSString*uti=result.defaultRepresentation.UTI;
  3. NSLog(@"uti=%@",uti);
  4. //图片的长宽
  5. CGSizedimensions=result.defaultRepresentation.dimensions;
  6. NSLog(@"width=%f.height=%f",dimensions.width,dimensions.height);
  7. //图片的全屏图
  8. CGImageRefrefScreen=result.defaultRepresentation.fullScreenImage;
  9. //图片的高清图
  10. CGImageRefrefResolution=result.defaultRepresentation.fullResolutionImage;
  11. //图片名称
  12. NSString*fileName=result.defaultRepresentation.filename;
  13. NSLog(@"fileName=%@",fileName);
  14. //图片大小
  15. longlongsize=result.defaultRepresentation.size;
  16. NSLog(@"size=%lld",size);
  17. //图片原数据
  18. NSDictionary*metadata=result.defaultRepresentation.metadata;
  19. NSLog(@"metadata=%@",metadata);
  20. //图片方向
  21. ALAssetOrientationorientation=result.defaultRepresentation.orientation;
  22. NSLog(@"orientation=%d",orientation);
  23. //图片缩放大小
  24. floatscale=result.defaultRepresentation.scale;
  25. NSLog(@"scale=%f",scale);
  26. //图片URL
  27. NSURL*url=result.defaultRepresentation.url;
  28. NSLog(@"url=%@",url);

输出:

>>uti = public.jpeg(不知道UTI什么意思,所有图片都是一样)

>>width = 1260.000000 . height = 1680.000000

>>fileName = IMG_0670.JPG

>>size = 543520

>>metadata = {

ColorModel = RGB;

DPIHeight = 72;

DPIWidth = 72;

Depth = 8;

Orientation = 1;

PixelHeight = 1680;

PixelWidth = 1260;

"{Exif}" = {

ColorSpace = 1;

ComponentsConfiguration = (

1,

2,

3,

0

);

ExifVersion = (

2,

2,

1

);

FlashPixVersion = (

1,

0

);

PixelXDimension = 1260;

PixelYDimension = 1680;

SceneCaptureType = 0;

};

"{TIFF}" = {

Orientation = 1;

ResolutionUnit = 2;

XResolution = 72;

YResolution = 72;

};

}

>>orientation = 0

>>scale = 1.000000

>> url = assets-library://asset/asset.JPG?id=9801003C-5700-4670-B255-FCD27297B74A&ext=JPG

参考:

http://www.tuicool.com/articles/UBZJFb

http://blog.csdn.net/sbvfhp/article/details/12384707

http://blog.csdn.net/enuola/article/details/8160801

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics