| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- //
- // PickerDatas.m
- // 相册Demo
- //
- //
- #import "DKPhotoPickerDatas.h"
- #import "DKPhotoPickerGroup.h"
- #import <AssetsLibrary/AssetsLibrary.h>
- @interface DKPhotoPickerDatas ()
- @property (nonatomic , strong) ALAssetsLibrary *library;
- @end
- @implementation DKPhotoPickerDatas
- + (ALAssetsLibrary *)defaultAssetsLibrary
- {
- static dispatch_once_t pred = 0;
- static ALAssetsLibrary *library = nil;
- dispatch_once(&pred,^
- {
- library = [[ALAssetsLibrary alloc] init];
- });
- return library;
- }
- - (ALAssetsLibrary *)library
- {
- if (nil == _library)
- {
- _library = [self.class defaultAssetsLibrary];
- }
-
- return _library;
- }
- #pragma mark - getter
- + (instancetype) defaultPicker{
- return [[self alloc] init];
- }
- #pragma mark -获取所有组
- - (void) getAllGroupWithPhotos : (callBackBlock ) callBack{
- [self getAllGroupAllPhotos:YES withResource:callBack];
- }
- - (void) getAllGroupAllPhotos:(BOOL)allPhotos withResource : (callBackBlock ) callBack{
- NSMutableArray *groups = [NSMutableArray array];
- ALAssetsLibraryGroupsEnumerationResultsBlock resultBlock = ^(ALAssetsGroup *group, BOOL *stop){
- if (group) {
- if (allPhotos){
- [group setAssetsFilter:[ALAssetsFilter allPhotos]];
- }else{
- [group setAssetsFilter:[ALAssetsFilter allVideos]];
- }
- // 包装一个模型来赋值
- DKPhotoPickerGroup *pickerGroup = [[DKPhotoPickerGroup alloc] init];
- pickerGroup.group = group;
- pickerGroup.groupName = [group valueForProperty:@"ALAssetsGroupPropertyName"];
- pickerGroup.thumbImage = [UIImage imageWithCGImage:[group posterImage]];
- pickerGroup.assetsCount = [group numberOfAssets];
- [groups addObject:pickerGroup];
- }else{
- callBack(groups);
- }
- };
-
- NSInteger type = ALAssetsGroupAll;
-
- [self.library enumerateGroupsWithTypes:type usingBlock:resultBlock failureBlock:nil];
- }
- /**
- * 获取所有组对应的图片
- */
- - (void) getAllGroupWithVideos:(callBackBlock)callBack {
- [self getAllGroupAllPhotos:NO withResource:callBack];
- }
- #pragma mark -传入一个组获取组里面的Asset
- - (void) getGroupPhotosWithGroup : (DKPhotoPickerGroup *) pickerGroup finished : (callBackBlock ) callBack{
-
- NSMutableArray *assets = [NSMutableArray array];
- ALAssetsGroupEnumerationResultsBlock result = ^(ALAsset *asset , NSUInteger index , BOOL *stop){
- if (asset) {
- [assets addObject:asset];
- }else{
- callBack(assets);
- }
- };
- [pickerGroup.group enumerateAssetsUsingBlock:result];
-
- }
- #pragma mark -传入一个AssetsURL来获取UIImage
- - (void) getAssetsPhotoWithURLs:(NSURL *) url callBack:(callBackBlock ) callBack{
- [self.library assetForURL:url resultBlock:^(ALAsset *asset) {
- dispatch_async(dispatch_get_main_queue(), ^{
- callBack([UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]]);
- });
- } failureBlock:nil];
- }
- #pragma mark - 通过传入一个图片对象(ALAsset、URL)获取一张缩略图
- - (UIImage *) getImageWithImageObj:(id)imageObj{
- __block UIImage *image = nil;
- if ([imageObj isKindOfClass:[UIImage class]]) {
- image = imageObj;
- }else if ([imageObj isKindOfClass:[ALAsset class]]){
- ALAsset *asset = (ALAsset *)imageObj;
- image = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]];
- }else if ([imageObj isKindOfClass:[NSURL class]]){
- image = imageObj;
- }
- return image;
- }
- @end
|