Search code examples
iosobjective-ciphoneuiimagepickercontroller

How can i get the name of image picked through photo library in iphone?


I am picking an image from photo library in iphone application. How will i retrieve the actual image name.

in .h class

UIImageView * imageView;

UIButton * choosePhotoBtn;

in .m class

-(IBAction) getPhoto:(id) sender 
{
    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    if((UIButton *) sender == choosePhotoBtn)
    {
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    }
    else 
    { 
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    }
    [self presentModalViewController:picker animated:YES];
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{
    [picker dismissModalViewControllerAnimated:YES];
    imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}

How will i get the actual name of image ?

I m new in iphone. Please help me.

Thanks in advance.


Solution

  • import AssetsLibrary in your file:

    #import <AssetsLibrary/AssetsLibrary.h>
    

    And, in - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

    put

    // get the ref url
    NSURL *refURL = [info valueForKey:UIImagePickerControllerReferenceURL];
    
    // define the block to call when we get the asset based on the url (below)
    ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *imageAsset)
    {
        ALAssetRepresentation *imageRep = [imageAsset defaultRepresentation];
        NSLog(@"[imageRep filename] : %@", [imageRep filename]);
    };
    
    // get the asset library and fetch the asset based on the ref url (pass in block above)
    ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
    [assetslibrary assetForURL:refURL resultBlock:resultblock failureBlock:nil];
    

    so you'll get the image name in log.

    *don't forget to add existing framework: AssetsLibrary.framework Steps:

    1. In the project navigator, select your project
    2. Select your target
    3. Select the 'Build Phases' tab
    4. Open 'Link Binaries With Libraries' expander
    5. Click the '+' button
    6. Select your framework
    7. (optional) Drag and drop the added framework to the 'Frameworks' group

    Source: http://www.raywenderlich.com/forums/viewtopic.php?f=2&p=34901 & How to "add existing frameworks" in Xcode 4?