iOS Developer程序员

ALAssetsLibrary 取某时间段内的图片

2017-06-07  本文已影响77人  Allenyao

最近项目在做一个需求,从相册取出某时间段内的图片,然后各种转换其他格式。
ALAsset转 Data
ALAsset转 base64字符串
ALAsset转 本地图片的地址

首先是获取对应时间段内的图片

需要传两个参数 一个是最早的时间NSDate格式,另一个最大的时间也是NSDate

- (void)goToLoadImage:(NSDate *)minDate maxDate:(NSDate *)maxDate andArrBlock:(void(^)(NSMutableArray *array))arrblock{
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
//     使用参数取出所有存储的文件照片
    NSMutableArray *array = [[NSMutableArray alloc] init];
    [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        
        if (group != nil) {
            [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
                if (result != nil) {
                    if ([self changeDate:[result valueForProperty:ALAssetPropertyDate] otherMinDate:minDate maxDate:maxDate])
                    {
                        
                            [array addObject:[self AlassetImagetoLocaiteString:result]];
                    }
                }
                
            }];
            arrblock(array);
        }
        
    } failureBlock:^(NSError *error) {
        arrblock(array);

//        读取照片失败
        
    }];

}

这里面用到一个方法 时间比较的方法,比价最小时间 图片时间和最大时间。
参数类型都是NSDate

- (BOOL)changeDate:(NSDate *)date otherMinDate:(NSDate *)minDate maxDate:(NSDate *)maxDate
{
    /*
     1.date为照片的时间
     2.minDate为间隔段的最早时间
     3.maxDate为间隔段的最晚时间
     */
    
    BOOL ischangedate;
    if (!(date == nil))
    {
        BOOL isOne = [date laterDate:minDate] == date ? YES : NO;
        BOOL isTwo = [date earlierDate:maxDate] == date ? YES : NO;
        if (isOne && isTwo) {
            ischangedate = YES;
        } else
        {
            ischangedate = NO;
        }
        
    }
    return ischangedate;
}

下面是各种ALAsset 转换方法

ALAsset转 本地图片地址,这也是上面方法用到的

- (NSString *)AlassetImagetoLocaiteString:(ALAsset *)asset
{
    ALAssetRepresentation* representation = [asset defaultRepresentation];
    NSURL* url = [representation url];
    NSString *imagedtr = [NSString stringWithFormat:@"%@",url];
    return imagedtr;
    
}
    ```
ALAsset转 Data
```javascript
- (NSData *)AlassetImageChangeData:(ALAsset *)asset
{
    CGImageRef img = [asset aspectRatioThumbnail];
    UIImage *inputImage = [UIImage imageWithCGImage:img];
    NSData *imageData = UIImageJPEGRepresentation(inputImage,1.0);
    return imageData;
    
}

ALAsset转 base64字符串

- (NSString *)AlassetImageChangetobase64String:(ALAsset *)asset
{
    CGImageRef img = [asset aspectRatioThumbnail];
    UIImage *inputImage = [UIImage imageWithCGImage:img];
    NSData *imageData = UIImageJPEGRepresentation(inputImage,1.0);
    NSString *encodedImageStr = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    return encodedImageStr;
    
}

算是一个小总结吧,希望大家可以用上,使用过程中有问题可以及时交流哦,还请大神们多多请教。
第一次写就这样吧。哈哈。。。

上一篇 下一篇

猜你喜欢

热点阅读