iOS UIImagePickerController:有没有办法获取所选图片的日期?
在我的应用程序中,我使用UIImagePickerController调用iOS UIImagePickerController:有没有办法获取所选图片的日期?,ios,uiimagepickercontroller,Ios,Uiimagepickercontroller,在我的应用程序中,我使用UIImagePickerController调用 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 关于成功。 问题是,我需要照片拍摄的日期。如果用户拍摄了一张新照片,我当然可以拍摄当前日期,但是如果用户从他的相机卷或另一张保存的照片中选择了一张照片,我该怎么办 - (void)imageP
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
关于成功。
问题是,我需要照片拍摄的日期。如果用户拍摄了一张新照片,我当然可以拍摄当前日期,但是如果用户从他的相机卷或另一张保存的照片中选择了一张照片,我该怎么办
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSDictionary *metadataDictionary = (NSDictionary *)[info valueForKey:UIImagePickerControllerMediaMetadata];
// do something with the metadata
NSLog(@"meta : %@ \n\n",metadataDictionary);
}
然后
您必须从中获取“DateTime”键的值,您可以将此代码用于从相册中获取的照片和视频info是上述委托方法中的第二个参数
NSURL *mediaUrl = info[UIImagePickerControllerReferenceURL];
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
[assetsLibrary assetForURL:mediaUrl resultBlock:^(ALAsset *asset) {
NSDate *date = [asset valueForProperty:ALAssetPropertyDate];
// ...
} failureBlock:nil];
同样,要使其正常工作,您需要包括到projectAssetLibrary框架中。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)
}
}
不幸的是,根据文档,UIImagePickerController Diametadata仅在iOS4.1中可用,并且仅在有人拍摄新图片时可用,但不适用于库/相册中的图片:(很好,但第1行的输入错误:应该是mediaUrl而不是urlUIImagePickerControllerReferenceURL在iOS 11中不受欢迎UIImagePickerControllerReferenceUrl在iOS 11中不受欢迎