AVISO: Cualquier pregunta que no cumpla ninguno de estos criterios podrá ser borrada sin previo aviso.

Esta pregunta me surge por la búsqueda que estoy haciendo de una app en iPhone para organizar fotos pero sin que las importe y copie en su bundle (y así duplicándolas). Vamos, algo así como un linkaje blando a las fotos del carrete y con carpetas y albumes que muestren las fotos que sean, no que las guarden como tal.

Dado que no la encuentro dudo pues que se pueda acceder a la lista de fotos por código (como si la lista de contactos fuese) y recoger la información de las fotos para mostrarlas en pantalla sino que solamente se puede mediante el selector, que seleccionando una te devuelve la foto.

¿Es posible o no está contemplado en la API pública?

preguntado 11 Feb '11, 11:57

emenegro's gravatar image

emenegro
3.7k163264

A lo mejor me contesto yo solo.

"An instance of ALAssetsLibrary represents the videos and photos that are under the control of the Photos application."

No lo he leído entero pero viene a ser una clase desde la que recoger la información de la cámara. Si desde esa información se pudiese cargar las fotos en UIImage se podría tener una app con la que visualizar fotos concretas, no todas las del carrete, y así poder montar un sistema de organización.

Edit: se pueden enumerar todas las fotos y, creo, recogerlas en un CGImageRef para cargar en un UIImage. Al menos el thumbnail, no sé si toda la foto completa.

(11 Feb '11, 12:26) emenegro

Efectivamente, a partir de iOS4 se puede acceder a las fotos mediante ALAssetsLibrary, pero hay poca documentación al respecto. El siguiente código es un ejemplo que sacará por consola un listado de las fotos que haya guardadas en el carrete:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:
    ^(ALAssetsGroup *group, BOOL *stop) {
        [group enumerateAssetsUsingBlock:
            ^(ALAsset *asset, NSUInteger index, BOOL *innerStop) {      
                if (asset != nil) {
                    // el objeto ALAsset en sí (lo que sale por consola es su URL):
                    NSLog(@"%@",asset);
                    // la referencia al CGImage representando la miniatura:
                    NSLog(@"%@",[asset thumbnail]);
                }
            }
        ];
    }
failureBlock:
    ^(NSError *error) {
        NSLog(@"No groups");
    }
];
enlace permanente

respondido 12 Feb '11, 02:08

xeleh's gravatar image

xeleh
1.3k21028

Tu respuesta:
Activar/desactivar vista previa