0

我正在寻找是否可以弄清楚如何从我的 iphone 捕获的图像中访问 Exif 元数据信息。苹果文档似乎缺少我正在寻找的必要信息。我可能会愚蠢地处理这个问题,但我对 iPhone 编程和 Objective-c 还比较陌生,所以我还在搞清楚一切。


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

//EXPERIMENTATION
NSDictionary *metadata = [info objectForKey:UIImagePickerControllerMediaMetadata];
NSArray *metaDataKeys = [metadata allKeys];

for (NSUInteger i=0; i  [metaDataKeys count]; i++)
{
    NSLog(@"%@", [metaDataKeys objectAtIndex:i]);
}  

此代码产生以下输出:
2010-10-21 14:42:56.354 _ [3607:307] DPIHeight
2010-10-21 14:42:56.355 _ [3607:307] {Exif}
2010-10-21 14: 42:56.356 _ [3607:307] DPIWidth
2010-10-21 14:42:56.357 _ [3607:307] 方向
2010-10-21 14:42:56.358 _ [3607:307] {TIFF}

“{Exif}”表示什么?键字面意思是字符串“{Exif}”吗?我猜不是,因为当我尝试使用该键提取对象时,我收到一个 NULL。当我最终从这个 NSDictionary 中获得 Exif 标签时,是否有人碰巧知道它是什么类型的?是否有任何有助于学习如何使用 Exif 标签的文档?谢谢!

4

2 回答 2

3

EXIF = 可交换图像文件格式

http://en.wikipedia.org/wiki/Exchangeable_image_file_format

于 2010-10-21T22:36:47.250 回答
1

您可以直接记录字典:

NSLog(@"metadata : %@", metadata);

这比像您那样列出键更简单(更好),并且还显示了它们的内容!

Metadata {
    ColorModel = RGB;
    DPIHeight = 72;
    DPIWidth = 72;
    Depth = 8;
    Orientation = 6;
    PixelHeight = 55;
    PixelWidth = 116;
    "{Exif}" =     {
        ColorSpace = 1;
        ComponentsConfiguration =         (
            1,
            2,
            3,
            0
        );
        ExifVersion =         (
            2,
            2,
            1
        );
        FlashPixVersion =         (
            1,
            0
        );
        PixelXDimension = 55;
        PixelYDimension = 116;
        SceneCaptureType = 0;
    };
    "{TIFF}" =     {
        Orientation = 6;
        ResolutionUnit = 2;
        XResolution = 72;
        YResolution = 72;
        "_YCbCrPositioning" = 1;
    };
}
于 2010-12-14T15:22:05.637 回答