简体   繁体   English

如何从UIImagePickerController拍摄的照片和视频中获取日期?

[英]How to get date from photos AND videos taken from UIImagePickerController?

如果呈现的源图像类型为.Camera (Swift)的UIImagePickerController ,如何在UIImagePickerControllerDelegate方法中获取图像或视频的拍摄日期(或开始录制,对于视频而言)。

You have to access the info and extract the meta data and extract the date from that: 您必须访问info并提取元数据并从中提取日期:

- (void)imagePickerController:(nonnull UIImagePickerController *)picker didFinishPickingMediaWithInfo:(nonnull NSDictionary<NSString *,id> *)info {
    NSString* meta = [[[info objectForKey:UIImagePickerControllerMediaMetadata] objectForKey:@"{TIFF}"] objectForKey:@"DateTime"];
    NSDateFormatter *form = [[NSDateFormatter alloc] init];
    form.dateFormat = @"yyyy:MM:dd HH:mm:ss";
    NSDate* date = [form dateFromString:meta];

    [picker dismissViewControllerAnimated:true completion:^{}];
}

Use the imagePickerController(_picker, didFinishPickingMediaWithInfo info) method of the UIImagePickerControllerDelegate protocol. 使用UIImagePickerControllerDelegate协议的imagePickerController(_picker, didFinishPickingMediaWithInfo info)方法。

func imagePickerController(_ picker: UIImagePickerController,
  didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
      let metaDataDict = info.valueForKey(UIImagePickerControllerMediaMetadata) as? NSDictionary
      // print metaDataDict to see it's keys and values
      println("meta data = \(metaDataDict.description)")
}

You can then determine the key for the date the photo was taken (note that [UIImagePickerControllerMediaMetadata][1] is only for photos). 然后,您可以确定照片拍摄日期的密钥(请注意[UIImagePickerControllerMediaMetadata][1]仅用于照片)。

First you present you UIImagePickerController and when you get the callback imagePickerController(_:didFinishPickingMediaWithInfo:) grab the info dictionary and extract the date info: 首先,向您展示UIImagePickerController并在获取回调imagePickerController(_:didFinishPickingMediaWithInfo:)获取信息字典并提取日期信息:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
    if let url = info[UIImagePickerControllerMediaURL] as? NSURL { // Its possible that there will not be a date present
    let assetsLibrary = ALAssetsLibrary()
    assetsLibrary.assetForURL(url, resultBlock: { (asset: ALAsset!) -> Void in
        if let date = asset.valueForProperty(ALAssetPropertyDate) as? NSDate {
            print("\(date)\n")
        }

        }) { (error: NSError!) -> Void in
            // Handle error
        }
    }
}

Be sure to link with AssetsLibrary . 确保与AssetsLibrary链接。

Presenting can be done like so: 演示可以这样进行:

let picker = UIImagePickerController()
picker.sourceType = .PhotoLibrary
picker.delegate = self
self.presentViewController(picker, animated: true, completion: nil)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 iOS Monotouch UIImagePickerController来自相机的多张照片/视频 - iOS Monotouch UIImagePickerController multiple photos / videos from camera 如何从使用相机拍摄的 UIImagePickerController 中获取图像名称 - How to get image name from UIImagePickerController taken with Camera 使用UIImagepickercontroller从Iphone照片库获取照片 - Get photos from Iphone photo gallery with UIImagepickercontroller 如何上传从UIImagePickerController中获取的图像 - How to upload image that was taken from UIImagePickerController Swift - 如何从照片库中获取最后拍摄的 3 张照片? - Swift - how to get last taken 3 photos from photo library? 以纵向模式拍摄的图像选择器 (UIImagePickerController) 中的照片显示为拉伸 - Xcode 11 / SwiftUI - Photos from Image Picker (UIImagePickerController) taken in portrait mode show up stretched - Xcode 11 / SwiftUI 如何从照片库中检索数组中的所有照片和视频? - How to retrieve all the photos and videos in an array from Photos library? 如何将从UIImagePickerController中获取的图像保存为HEIF文件? - How to save image taken from UIImagePickerController as HEIF file? 如何使用UIImagePickerController从实际设备访问照片 - How to access photos from actual device using UIImagePickerController swift:如何在不使用UIImagePickerController的情况下从照片库加载照片? - swift: How to load photos from photo library without using UIImagePickerController?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM