Как прочитать информацию "{TIFF}" внутри метаданных снятого изображения - PullRequest
3 голосов
/ 21 февраля 2012

Я новичок в target-c, и у меня проблемы с чтением информации в UIImagePickerControllerMediaMetaData.

-(void) imagePickerController:(UIImagePickerController *)imagepicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

//This line is fine.
NSDictionary *metadata = [info objectForKey:UIImagePickerControllerMediaMetadata];

//This line fail to operate...
NSArray *tiffData = [metadata objectForKey:Exif];

Я могу получить метаданные.Однако информация внутри метаданных немного сбивает с толку, и ниже показано, что внутри метаданных.

UIImagePickerControllerMediaMetadata =     {
    DPIHeight = 72;
    DPIWidth = 72;
    Orientation = 6;
    "{Exif}" =         {
        ApertureValue = "2.526068811667588";
        BrightnessValue = "-1.739497174308802";
        ColorSpace = 1;
        DateTimeDigitized = "2012:02:21 11:53:44";
        DateTimeOriginal = "2012:02:21 11:53:44";
        ExposureMode = 0;
        ExposureProgram = 2;
        ExposureTime = "0.06666666666666667";
        FNumber = "2.4";
        Flash = 32;
        FocalLenIn35mmFilm = 32;
        FocalLength = "2.03";
        ISOSpeedRatings =             (
            800
        );
        MeteringMode = 5;
        PixelXDimension = 960;
        PixelYDimension = 720;
        SceneType = 1;
        SensingMethod = 2;
        Sharpness = 0;
        ShutterSpeedValue = "3.906905022631062";
        WhiteBalance = 0;
    };
    "{TIFF}" =         {
        DateTime = "2012:02:21 11:53:44";
        Make = Apple;
        Model = "iPad 2";
        Software = "5.0.1";
        XResolution = 72;
        YResolution = 72;
    };
};

Так как же я могу прочитать "{Exif}" и "{TIFF}"?

Спасибо за помощь.Я нашел везде и просто не смог получить ответ ...

1 Ответ

8 голосов
/ 22 февраля 2012

Записи {EXIF} и {TIFF} являются словарями, содержащимися в словаре метаданных. Вы можете получить ссылку на них, используя код:

NSDictionary *metadata = [info objectForKey:UIImagePickerControllerMediaMetadata];
NSDictionary *exifMetadata = [metadata objectForKey:(id)kCGImagePropertyExifDictionary];
NSDictionary *tiffMetadata = [metadata objectForKey:(id)kCGImagePropertyTiffDictionary];

Все ключи метаданных описаны на странице документации CGImageProperties Reference. Приведение (id) необходимо, потому что все ключи имеют значение CFStringRef с, и должны быть бесплатными, соединенными с NSString с.

...