iOS UIImagePickerController: есть ли способ получить дату выбранного изображения? - PullRequest
3 голосов
/ 07 октября 2011

В моем приложении я использую UIImagePickerController, который вызывает

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

в случае успеха. Дело в том, что мне нужна дата, когда было сделано изображение. Если пользователь снял новое изображение, я, конечно, могу взять текущую дату, но что я могу сделать, если пользователь выбрал изображение из своей камеры или другой сохраненный снимок?

Ответы [ 3 ]

4 голосов
/ 23 июня 2014

Вы можете использовать этот код для фотографий и видео, извлеченных из альбомов. info - второй параметр в упомянутом методе делегата.

NSURL *mediaUrl = info[UIImagePickerControllerReferenceURL];
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];

[assetsLibrary assetForURL:mediaUrl resultBlock:^(ALAsset *asset) {
    NSDate *date = [asset valueForProperty:ALAssetPropertyDate];
    // ...
} failureBlock:nil];

Кроме того, чтобы это работало, вам необходимо включить в проект AssetsLibrary framework.

2 голосов
/ 10 апреля 2016

iOS 11+, Swift 4 +

import Photos
extension ViewController : UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    public func imagePickerController(_ picker: UIImagePickerController,
                                      didFinishPickingMediaWithInfo info: [String : Any]) {
        if let asset = info[UIImagePickerControllerPHAsset] as? PHAsset,
            let creationDate = asset.creationDate {
            print(creationDate) // Here is the date when your image was taken
        }
        dismiss(animated: true)
    }
}
2 голосов
/ 07 октября 2011
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    NSDictionary *metadataDictionary = (NSDictionary *)[info valueForKey:UIImagePickerControllerMediaMetadata];
        // do something with the metadata

    NSLog(@"meta : %@ \n\n",metadataDictionary);
}

тогда

вы должны получить значение ключа "DateTime" из этого

...