在iOS中,是否可以访问UIImagePickerController拍摄的图像的元数据?我知道使用AssetLibrary框架可以实现对相机应用程序捕获的图像(或iPhone照片库中存在的图像)的元数据访问,但是开发人员是否可以在用户拍摄照片后立即从应用程序内部访问任何元数据/ exif信息?我正在寻找拍摄后图像的任何类型的相机曝光级别信息。谢谢!
在iOS中,是否可以访问UIImagePickerController拍摄的图像的元数据?我知道使用AssetLibrary框架可以实现对相机应用程序捕获的图像(或iPhone照片库中存在的图像)的元数据访问,但是开发人员是否可以在用户拍摄照片后立即从应用程序内部访问任何元数据/ exif信息?我正在寻找拍摄后图像的任何类型的相机曝光级别信息。谢谢!
显然,在拍摄完一张图片后,您可以立即访问其元数据。系统在选择图像后调用的协议方法是:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
NSDictionary参数info包含一个键:UIImagePickerControllerMediaMetadata
现在,如果我能找出如何从中获取exif标签或任何曝光级别的信息来推断关于光亮度的基本信息,我将会很高兴。 :)
更新到 iOS 11 并使用照片框架
Objective-C:
#import <Photos/Photos.h>
- (void)imagePickerController:(UIImagePickerController *)imagePicker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
PHAsset* asset = info[UIImagePickerControllerPHAsset];
[asset requestContentEditingInputWithOptions:nil completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
CIImage *fullImage = [CIImage imageWithContentsOfURL:contentEditingInput.fullSizeImageURL];
NSLog(@"%@", fullImage.properties.description);
}];
[imagePicker dismissViewControllerAnimated:YES completion:nil];
}
你还需要获取照片库访问权限(NSPhotoLibraryUsageDescription),然后可以将以下代码添加到“view did load”或“view did appear”中
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
switch (status) {
case PHAuthorizationStatusAuthorized:
NSLog(@"PHAuthorizationStatusAuthorized");
break;
case PHAuthorizationStatusDenied:
NSLog(@"PHAuthorizationStatusDenied");
break;
case PHAuthorizationStatusNotDetermined:
NSLog(@"PHAuthorizationStatusNotDetermined");
break;
case PHAuthorizationStatusRestricted:
NSLog(@"PHAuthorizationStatusRestricted");
break;
}
}];