2010-10-21 45 views
6

Có thể truy cập siêu dữ liệu của hình ảnh được chụp bởi UIImagePickerController trong iOS không? Tôi hiểu điều này có thể được thực hiện với khung AssetLibrary cho hình ảnh được ứng dụng máy ảnh chụp (hoặc có mặt trong thư viện ảnh iPhone), nhưng nhà phát triển có thể truy cập bất kỳ thông tin siêu dữ liệu/exif nào từ bên trong ứng dụng ngay sau khi người dùng đã thực hiện hình ảnh? Tôi đang tìm bất kỳ loại thông tin mức phơi sáng nào từ một hình ảnh sau khi nó đã được chụp. Cảm ơn!Siêu dữ liệu truy cập (thẻ exif) của hình ảnh được chụp bởi UIImagePickerController - iOS/iPhone

+0

Exif là một đoạn dữ liệu được định dạng tiff chứa bên trong dấu JPEG. Vì vậy, nếu bạn có quyền truy cập vào tệp hình ảnh thô, bạn có thể phân tích cú pháp và đọc nó. –

Trả lời

5

Dường như, bạn có thể truy cập siêu dữ liệu của hình ảnh ngay sau khi nó được chụp. Phương pháp giao thức được gọi bởi hệ thống sau khi một hình ảnh đã được chọn là:

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

Đối số NSDictionary, thông tin, chứa một chìa khóa: UIImagePickerControllerMediaMetadata

Bây giờ nếu tôi có thể tìm ra cách để có được exif hoặc bất kỳ thông tin cấp độ tiếp xúc nào từ điều này để phỏng đoán thông tin cơ bản về mức độ ánh sáng, tôi sẽ rất vui. :)

+0

Bạn có thể sử dụng CLLocationManager để lấy vị trí hiện tại và gắn thẻ địa lý. – nonamelive

+1

Lưu ý rằng nó chỉ woks khi bạn chụp ảnh từ máy ảnh và sử dụng UIImagePickerController. –

0

cập nhật lên iOS 11 với hình ảnh khuôn khổ

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

Bạn cũng cần sự cho phép của Ảnh viện sử dụng (NSPhotoLibraryUsageDescription) và sau đó có thể thêm đoạn mã sau vào chế độ xem đã tải hoặc xem đã xuất hiện

[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; 
    } 
}]; 
Các vấn đề liên quan