1

我使用资产库从URL获取图像,我的代码是在iOS的资源库的问题 - 5

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset){  
    ALAssetRepresentation *rep = [myasset defaultRepresentation]; 
    CGImageRef iref = [rep fullResolutionImage]; 
    UIImage *largeimage; 

    if (iref) { 
     largeimage = [UIImage imageWithCGImage:iref]; 
    } 

    [self customeButtonCreated:self]; 

    NSData* thumbImageData = [[NSData alloc] initWithContentsOfFile:imagePath]; 
    btn1.frame = CGRectMake(x, y, WIDTH, HEIGHT); 
    [btn1 setTag:tag]; 

    //[media_id addObject:[allKey objectAtIndex:0]];  
    [btnURl addObject:imagePath]; 

    UIImage *tempImage = [[UIImage alloc]initWithData:thumbImageData]; 
    [btn1 setImage:largeimage forState:UIControlStateNormal]; 
    btn1.imageView.contentMode = UIViewContentModeScaleAspectFit;   
    [tempImage release]; 

    [newView addSubview:btn1]; 
    [btn1 addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    [thumbImageData release]; 

    imgcount++; 

    NSLog(@"Iamge count ---%d",imgcount); 
    tag++; 
}; 

ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror){ 
    NSLog(@"Cannot get image - %@",[myerror localizedDescription]); 
}; 


if ([seprateArr count] == 2) { 
    NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"assets-library://asset/asset.JPG?id=%@&ext=%@",[seprateArr objectAtIndex:0],[seprateArr objectAtIndex:1]]]; 
    ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease]; 
    [assetslibrary assetForURL:url resultBlock:resultblock failureBlock:failureblock]; 
} 

它是在IOS做工精细 - 4或以下,但在IOS - 5它不进入在块显示errir

无法获取图像 - 环球拒绝访问

这方面的任何解决方案?

回答

2

这在IOS 4.0以及IOS 5

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
NSString *photoName; 
NSString *photoUrl; 

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init]; 
    void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) 
    { 
     if(result != NULL) 
     { 
      NSArray *arrKeys = [[result valueForProperty:ALAssetPropertyURLs]allKeys];    
      if([[result valueForProperty:ALAssetPropertyType]isEqualToString:ALAssetTypePhoto]) 
      { 
       if([[UIDevice currentDevice] systemVersion]>=5.0)) 
       { 
        photoName = [[result defaultRepresentation]UTI]; 

       } 
       else 
       { 
        photoName = [[result defaultRepresentation]filename]; 

       } 
       //Your code here 
       photoUrl = [[result valueForProperty:ALAssetPropertyURLs]objectForKey:[arrKeys objectAtIndex:0]]; 

      } 
     } 
    }; 

    void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) 
    { 
     if(group != nil) 
     { 
      [group enumerateAssetsUsingBlock:assetEnumerator]; 
     } 
    }; 
    [library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:assetGroupEnumerator failureBlock:^(NSError *error){ 
     NSLog(@"%@",error); 
    }]; 

    [pool release]; 
+0

这里是什么photoName对我的作品?图像的名称? – PJR

+0

意味着我必须使用[UIImage imageNamed:photoName]; – PJR

+0

photoName是图片的标题和photoUrl的资源网址。你可以像这样访问UIImage * image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL fileURLWithPath:photoUrl]]]; –