Reputation: 2397
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;
};
}
Upvotes: 2
Views: 1697
Reputation: 18308
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.
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.
Upvotes: 1