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.
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:
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;
};
}
Note that
kCGImagePropertyMakerCanonDictionary,kCGImagePropertyExifAuxDictionary, andkCGImagePropertyTIFFDictionaryare not options thatCGImageSourceCopyPropertiesAtIndexunderstands. 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.There's no declared property key to access the picture style data that I can see, but it does appear to be returned by
CGImageSourceCopyPropertiesAtIndexanyway. If you dump out thepropsdictionary 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 constantkCGImagePropertyMakerCanonDictionary, and the properties within that dictionary are those described in the relevant section of the documentation.