最近项目在做一个需求,从相册取出某时间段内的图片,然后各种转换其他格式。
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;
}
算是一个小总结吧,希望大家可以用上,使用过程中有问题可以及时交流哦,还请大神们多多请教。
第一次写就这样吧。哈哈。。。
网友评论