代码之家  ›  专栏  ›  技术社区  ›  Casey Flynn

UIImagePickerController-iOS/iPhone拍摄的图像的访问元数据(exif标记)

  •  6
  • Casey Flynn  · 技术社区  · 15 年前

    是否可以访问UIImagePickerController在iOS中捕获的图像的元数据?我知道这可以通过相机应用程序(或iPhone照片库中的其他应用程序)捕获的图像的AssetLibrary框架来实现,但是开发人员可以在用户拍照后立即从应用程序中访问任何元数据/exif信息吗?我正在寻找任何类型的相机曝光水平信息,从一个图像后,已经采取了。谢谢!

    2 回复  |  直到 15 年前
        1
  •  5
  •   Srikar Appalaraju Tonetel    14 年前

    显然,您可以在图像被拍摄后立即访问其元数据。选择图像后系统调用的协议方法是:

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

    NSDictionary参数info包含一个键: UIImagePickerControllerMediaMetadata

    现在,如果我能找出如何获得exif标签或任何曝光水平信息,从中推断出基本信息的光水平,我会很高兴。:)

        2
  •  0
  •   shanezzar    8 年前

    使用照片框架更新到iOS 11

    目标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),然后可以添加以下代码以查看是否加载或查看是否显示

    [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;
        }
    }];