从元数据中提取图像图片样式

时间:2021-03-04 21:18:50

I'm using the ios CGImageSourceCopyPropertiesAtIndex to extract a lot of metadata for images on ios. But I cannot extract all metadata like the ones shown in Mac Preview app or the exiftool command.

我正在使用ios CGImageSourceCopyPropertiesAtIndex为ios上的图像提取大量元数据。但我无法提取所有元数据,如Mac预览应用程序或exiftool命令中显示的元数据。

I'm missing the "Picture Style" and "Canon" informations mostly.

我大多错过了“图片风格”和“佳能”信息。

How I'm reading the metadata:

我如何阅读元数据:

NSURL *imageFileURL = [NSURL fileURLWithPath:filePath];
CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)CFBridgingRetain(imageFileURL), NULL);
CFDictionaryRef props = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, NULL);
NSLog(@"%@", props);

Anyone have a hint ?

有人有提示吗?

This is the information using Preview

这是使用预览的信息

从元数据中提取图像图片样式

This is the information from the NSLog:

这是来自NSLog的信息:

2013-04-02 09:50:06.885 i2[67169:1f0f] {
ColorModel = RGB;
DPIHeight = 72;
DPIWidth = 72;
Depth = 8;
Orientation = 1;
PixelHeight = 1728;
PixelWidth = 2592;
"{Exif}" =     {
    ApertureValue = "5.375";
    BodySerialNumber = 1280809746;
    ColorSpace = 1;
    ComponentsConfiguration =         (
        1,
        2,
        3,
        0
    );
    CustomRendered = 0;
    DateTimeDigitized = "2012:12:24 12:58:46";
    DateTimeOriginal = "2012:12:24 12:58:46";
    ExifVersion =         (
        2,
        3
    );
    ExposureBiasValue = 0;
    ExposureMode = 1;
    ExposureProgram = 1;
    ExposureTime = "0.003125";
    FNumber = "6.3";
    Flash = 16;
    FlashPixVersion =         (
        1,
        0
    );
    FocalLength = 22;
    FocalPlaneResolutionUnit = 2;
    FocalPlaneXResolution = "2857.773";
    FocalPlaneYResolution = "2904.202";
    ISOSpeedRatings =         (
        3200
    );
    LensModel = "EF-S10-22mm f/3.5-4.5 USM";
    LensSpecification =         (
        10,
        22,
        0,
        0
    );
    MeteringMode = 5;
    PixelXDimension = 2592;
    PixelYDimension = 1728;
    SceneCaptureType = 0;
    ShutterSpeedValue = "8.375";
    SubsecTime = 35;
    SubsecTimeDigitized = 35;
    SubsecTimeOriginal = 35;
    WhiteBalance = 1;
};
"{IPTC}" =     {
    StarRating = 0;
};
"{TIFF}" =     {
    DateTime = "2012:12:24 12:58:46";
    Make = Canon;
    Model = "Canon EOS 7D";
    Orientation = 1;
    ResolutionUnit = 2;
    XResolution = 72;
    YResolution = 72;
    "_YCbCrPositioning" = 2;
};
}

1 个解决方案

#1


1  

Note that kCGImagePropertyMakerCanonDictionary, kCGImagePropertyExifAuxDictionary, and kCGImagePropertyTIFFDictionary are not options that CGImageSourceCopyPropertiesAtIndex understands. They're keys in the dictionary it returns. It doesn't appear to cause any problems to pass them, but it also doesn't achieve anything.

请注意,kCGImagePropertyMakerCanonDictionary,kCGImagePropertyExifAuxDictionary和kCGImagePropertyTIFFDictionary不是CGImageSourceCopyPropertiesAtIndex可以理解的选项。它们是它返回的字典中的键。它似乎没有导致传递它们的任何问题,但它也没有实现任何目标。

There's no declared property key to access the picture style data that I can see, but it does appear to be returned by CGImageSourceCopyPropertiesAtIndex anyway. If you dump out the props dictionary you should see a {PictureStyle} key that contains a dictionary with the information of interest. You'll also see a {MakerCanon}key. That corresponds to the constant kCGImagePropertyMakerCanonDictionary, and the properties within that dictionary are those described in the relevant section of the documentation.

没有声明的属性键来访问我可以看到的图片样式数据,但它似乎确实由CGImageSourceCopyPropertiesAtIndex返回。如果您转储道具词典,您应该看到一个{PictureStyle}键,其中包含一个包含感兴趣信息的字典。您还会看到{MakerCanon}键。这对应于常量kCGImagePropertyMakerCanonDictionary,该字典中的属性是文档相关部分中描述的属性。

#1


1  

Note that kCGImagePropertyMakerCanonDictionary, kCGImagePropertyExifAuxDictionary, and kCGImagePropertyTIFFDictionary are not options that CGImageSourceCopyPropertiesAtIndex understands. They're keys in the dictionary it returns. It doesn't appear to cause any problems to pass them, but it also doesn't achieve anything.

请注意,kCGImagePropertyMakerCanonDictionary,kCGImagePropertyExifAuxDictionary和kCGImagePropertyTIFFDictionary不是CGImageSourceCopyPropertiesAtIndex可以理解的选项。它们是它返回的字典中的键。它似乎没有导致传递它们的任何问题,但它也没有实现任何目标。

There's no declared property key to access the picture style data that I can see, but it does appear to be returned by CGImageSourceCopyPropertiesAtIndex anyway. If you dump out the props dictionary you should see a {PictureStyle} key that contains a dictionary with the information of interest. You'll also see a {MakerCanon}key. That corresponds to the constant kCGImagePropertyMakerCanonDictionary, and the properties within that dictionary are those described in the relevant section of the documentation.

没有声明的属性键来访问我可以看到的图片样式数据,但它似乎确实由CGImageSourceCopyPropertiesAtIndex返回。如果您转储道具词典,您应该看到一个{PictureStyle}键,其中包含一个包含感兴趣信息的字典。您还会看到{MakerCanon}键。这对应于常量kCGImagePropertyMakerCanonDictionary,该字典中的属性是文档相关部分中描述的属性。