¿Cómo mostrar la imagen específica de PhotoLibrary? [duplicar]

Posible duplicado:
Mostrar imagen de URL recuperada de ALAsset en iPhone

En mi aplicación, necesito obtener una imagen específica de la biblioteca de fotos,

con el uso de hizoFinishPickingMediaWithInfo Puedo obtener Imagename e ImagePath.

Estoy almacenando Imagename, ImagePath en la base de datos.

Pero, ¿cómo mostrar esa imagen específica con el uso de Imagename o ImagePath en Imageview desde Photo Library?

preguntado el 04 de julio de 12 a las 05:07

¿Esto es después de la selección de imágenes? mostrar la imagen seleccionada en un UIImageView? puede pasar la imagen a UIImage de esta manera. UIImage* imagen = [info objectForKey:UIImagePickerControllerOriginalImage]; // para la imagen original -

2 Respuestas

Por favor, haz uso de ALAssetLibrary. Para hacer esto, agregue el AssetsLibrary.framework a su proyecto y escriba el siguiente código.

Su nombre de archivo debe verse como 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];

Nota:

Después de la actualización a iOS 5 y una refactorización de código para hacer uso de ARC, obtendrá un error como

intento no válido de acceder a ALAssetPrivate más allá de la vida útil de su propiedad ALAssetsLibraryrefactoring para hacer uso de ARC

Para resolver esto, agregue un método estático para recuperar una instancia compartida de ALAssetLibrary clase.

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

Luego, acceda a él usando [MyClass defaultAssetsLibrary];

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

respondido 03 nov., 14:05

Si tiene una ruta de imagen con usted, puede usar el siguiente código. Tomemos imagePath como variable NSString que contiene la ruta de la imagen, incluido el nombre de la imagen.

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

Espero eso ayude.

Respondido 04 Jul 12, 05:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.