获取IPhone相册中图片的方法(包括获取所有图片)
獲取iphone相冊方法:
方法一:
ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock =
^(ALAssetsGroup *group, BOOL *stop) {
if (group!=nil) {
[groups addObject:group];
} else {
[self.tableView performSelectorOnMainThread:@selector(reloadData)
withObject:nil waitUntilDone:YES];
}
};
ALAssetsLibraryAccessFailureBlock failureBlock = ^(NSError *error)
{
NSString *errorMessage = nil;
switch ([error code]) {
case ALAssetsLibraryAccessUserDeniedError:
case ALAssetsLibraryAccessGloballyDeniedError:
errorMessage = @"The user has declined access to it.";
break;
default:
errorMessage = @"Reason unknown.";
break;
}
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Opps"
message:errorMessage delegate:self cancelButtonTitle:@"Cancel"
otherButtonTitles:nil, nil];
[alertView show];
[alertView release];
};
NSUInteger groupTypes = ALAssetsGroupAlbum | ALAssetsGroupEvent |
ALAssetsGroupFaces;
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] ?init];
[assetsLibrary enumerateGroupsWithTypes:groupTypes
usingBlock:listGroupBlock failureBlock:failureBlock];
[assetsLibrary release];
方法二:
void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) =
^(ALAssetsGroup *group, BOOL *stop)
{
if (group == nil)
{
[self.tableView performSelectorOnMainThread:@selector(reloadData)
withObject:nil waitUntilDone:YES];
return;
}
[groups addObject:group];
};
void (^assetGroupEnumberatorFailure)(NSError *) = ^(NSError *error)
{
NSString *errorMessage = nil;
switch ([error code]) {
case ALAssetsLibraryAccessUserDeniedError:
case ALAssetsLibraryAccessGloballyDeniedError:
errorMessage = @"The user has declined access to it.";
break;
default:
errorMessage = @"Reason unknown.";
break;
}
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Opps"
message:errorMessage delegate:self cancelButtonTitle:@"Cancel"
otherButtonTitles:nil, nil];
[alertView show];
[alertView release];
};
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] ?init];
[assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:assetGroupEnumerator
failureBlock:assetGroupEnumberatorFailure];
[assetsLibrary release];
以上是獲取所有ALAssetsGroup,即相冊對象。
獲取相冊的標示照片:
ALAssetsGroup *group = [groups objectAtIndex:index];
CGImageRef posterImageRef = [group posterImage];
UIImage *posterImage = [UIImage
imageWithCGImage:posterImageRef];
獲取相冊中的所有對象(相片和錄像等):
group = (ALAssetsGroup*)[assetGroups?objectAtIndex:index];
[group setAssetsFilter:[ALAssetsFilter allAssets]];
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger
index, BOOL *stop)
{
if(result == nil)
{
return;
}
//獲取相片的url:
NSString *url = [[[result
defaultRepresentation]url]description];
[self.urls addObject:url];
[self.assets addObject:result];
}];
只獲取照片的方法:
ALAssetsGroupEnumerationResultsBlock assetsEnumerationBlock =
^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
[assets addObject:result];
}
};
ALAssetsFilter *onlyPhotosFilter = [ALAssetsFilter?allPhotos];
[assetsGroup setAssetsFilter:onlyPhotosFilter];
[assetsGroup ?enumerateAssetsUsingBlock:assetsEnumerationBlock];
獲得的ALAsset對象就是相片對象:其中有相片的縮略圖,全屏圖,高清圖,url等屬性。
ALAsset *result = [assets objectAtIndex:index];
獲取url:
String類型:
NSString *url = [[[result
defaultRepresentation]url]description];
URL類型:
NSURL *url = [[result defaultRepresentation]url];
獲取縮略圖:
CGImageRef ?ref = [result thumbnail];
UIImage *img =?[[UIImage alloc]initWithCGImage:ref];
獲取全屏相片:
CGImageRef ref = [[result ?defaultRepresentation]fullScreenImage];
UIImage *img = [[UIImage alloc]initWithCGImage:ref];
獲取高清相片:
CGImageRef ref = [[result ?defaultRepresentation]fullResolutionImage];
UIImage *img = [[UIImage alloc]initWithCGImage:ref];
根據ALAsset的url獲取ALAsset對象:
void (^assetRseult)(ALAsset *) = ^(ALAsset *result)
{
if (result == nil)
{
return;
}
UIImage *image = [UIImage imageWithCGImage:[[result ?defaultRepresentation]fullScreenImage]];
[self.images addObject:image];
[self.assetArrays addObject:result];
};
void (^failureBlock)(NSError *) = ^(NSError *error) {
UIAlertView * alert = [[UIAlertView alloc]
initWithTitle:@"Error"
message:[NSString stringWithFormat:@"Error: %@", [error?description]]
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
[alert release];
NSLog(@"A problem occured %@", [error description]);
};
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] ?init];
[library assetForURL:assetUrl resultBlock:assetRseult ?failureBlock:failureBlock];
[library release];
resultBlock也可以如此定義:
ALAssetsLibraryAssetForURLResultBlock ?assetsResultBlock = ^(ALAsset *result)
{
if (result == nil)
{
return;
}
UIImage *image = [UIImage imageWithCGImage:[[result ?defaultRepresentation]fullScreenImage]];
[self.images addObject:image];
[self.assetArrays addObject:result];
};
獲取照片的時間:
-(void)getDate:(ALAsset*)rule
{
NSDictionary *dic = [[rule ?defaultRepresentation]metadata];
id dateTime = [[dic ?objectForKey:@"{TIFF}"]objectForKey:@"DateTime"];
if (dateTime!=nil) {
NSArray *time = [dateTime
componentsSeparatedByCharactersInSet:[NSCharacterSet
whitespaceCharacterSet]];
NSString *dataStr = [time objectAtIndex:0];
if (![date containsObject:dataStr]) {
[date addObject:[time objectAtIndex:0]];
}
}
}
總結
以上是生活随笔為你收集整理的获取IPhone相册中图片的方法(包括获取所有图片)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Excel图片调整大小
- 下一篇: ios项目icon和default图片命