How to show the specific image from PhotoLibrary? [duplicate]

痴心易碎 提交于 2020-01-13 06:53:09

问题


Possible Duplicate:
display image from URL retrieved from ALAsset in iPhone

In my Application I need to get specific image from Photo Library,

with use of didFinishPickingMediaWithInfo i am able to get the Imagename and ImagePath.

I am storing Imagename, ImagePath in Database.

But, how to show that specific image with use of the Imagename or ImagePath in Imageview from Photo Library?


回答1:


Please make use of ALAssetLibrary. To do this, add the AssetsLibrary.framework to your project and write the below code.

Your file name should look like assets-library://asset/asset.JPG?id=1000000194&ext=JPG

NSString *fileName = @"assets-library://asset/asset.JPG?id=1000000194&ext=JPG";

typedef void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *asset);
typedef void (^ALAssetsLibraryAccessFailureBlock)(NSError *error);    

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

    if (iref)
    {
        images = [UIImage imageWithCGImage:iref scale:[rep scale] orientation:(UIImageOrientation)[rep orientation]];       

        //doing UI operation on the main thread
         dispatch_async(dispatch_get_main_queue(), ^{

         yourImageView.image = images;

     });    

    }   
};

ALAssetsLibraryAccessFailureBlock failureblock  = ^(NSError *myerror)
{
    NSLog(@"can't get image");
};    

NSURL *asseturl = [NSURL URLWithString:fileName];

ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease];
[assetslibrary assetForURL:asseturl 
               resultBlock:resultblock   
              failureBlock:failureblock];

Note:

After the upgrade to iOS 5 and a code refactoring to make use of ARC, you will get an error as

invalid attempt to access ALAssetPrivate past the lifetime of its owning ALAssetsLibraryrefactoring to make use of ARC

To resolve this, add a static method to retrieve a shared instance of ALAssetLibrary class.

+ (ALAssetsLibrary *)defaultAssetsLibrary {
    static dispatch_once_t pred = 0;
    static ALAssetsLibrary *library = nil;
    dispatch_once(&pred, ^{
        library = [[ALAssetsLibrary alloc] init];
    });
    return library; 
}

Then, access it using [MyClass defaultAssetsLibrary];

[[MyClass defaultAssetsLibrary] assetForURL:asseturl 
                   resultBlock:resultblock   
                  failureBlock:failureblock];



回答2:


If you have image path with you than you can use the following code. Lets take imagePath as NSString Variable that contains image path including image name.

   NSData *thedata=[[NSData alloc]initWithContentsOfFile:imagePath];
     UIImageView *img=[[UIImageView alloc]initWithImage:[UIImage imageWithData:thedata]];

Hope it helps.



来源:https://stackoverflow.com/questions/11322289/how-to-show-the-specific-image-from-photolibrary

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!