zoukankan      html  css  js  c++  java
  • IOS IPHONE相册应用 资料整理

    http://blog.csdn.net/sf1106/article/details/8673292

    ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结

    http://amandayljaefi.blog.sohu.com/236124710.html

    获取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]];

    }

    }

    }

     
     
  • 相关阅读:
    Linux驱动下的platform总线架构(转)
    一生中很值得看的30个故事之一断箭
    学习嵌入式LINUX系统的笔记和体会
    DIY:自己动手做一个迷你 Linux 系统
    linux里面i386 i686 i486 i586代表什么?是什么意思
    菜鸟编译Linux内核
    LINUX核心重编与升级
    ARM 内核移植中常见的错误
    Linux 2.6.19.x 内核编译配置选项简介
    基于S3C2410平台移植Linux 2.6内核指南
  • 原文地址:https://www.cnblogs.com/lzxpythonhome/p/3121045.html
Copyright © 2011-2022 走看看