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

    }

    }

    }

     
     
  • 相关阅读:
    toj 2975 Encription
    poj 1797 Heavy Transportation
    toj 2971 Rotating Numbers
    zoj 2281 Way to Freedom
    toj 2483 Nasty Hacks
    toj 2972 MOVING DHAKA
    toj 2696 Collecting Beepers
    toj 2970 Hackle Number
    toj 2485 Card Tric
    js页面定位,相关几个属性
  • 原文地址:https://www.cnblogs.com/lzxpythonhome/p/3121045.html
Copyright © 2011-2022 走看看