Я использую два API для чтения данных EXIF из изображений, которые я назову «valueForProperty: NSImageEXIFData» и «CGImageSourceCopyPropertiesAtIndex». Оба предоставляют одни и те же данные EXIF, хотя второй предоставляет и другие данные (например, GPS, TIFF).
Оба дают неправильные значения для «ApertureValue» и «MaxApertureValue», а также правильное значение для «FNumber». Пример программы, которая следует, сбрасывает все метаданные, возвращаемые каждым методом, а также вызывает ExifTool. Выходные данные суммируются в конце.
(Зная, какой объектив я использовал, ExifTool верен, когда сообщает MaxApertureValue как 2.8.)
Подробности: Xcode 4.02, OS X 10.6.7, 10.6 SDK
Кто-нибудь еще заметил эту аномалию?
#import "ExifTestAppDelegate.h"
@implementation ExifTestAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSString *path = @"/Users/marc/Pictures/iPadPhotos- overflow/Portfolio/MJR_20061221_0258.jpg";
NSData *data = [NSData dataWithContentsOfFile:path];
NSImage *img = [[[NSImage alloc] initWithData:data] autorelease];
NSImageRep *rep = [img bestRepresentationForRect:NSMakeRect(0, 0, 500, 500) context:nil hints:nil];
NSDictionary *exifDict = (NSDictionary *)[(id)rep valueForProperty:NSImageEXIFData];
NSLog(@"NSImageEXIFData: %@", exifDict);
CGImageSourceRef imgSource = CGImageSourceCreateWithData((CFDataRef)data, nil);
CFDictionaryRef dictRef = CGImageSourceCopyPropertiesAtIndex(imgSource, 0, nil);
NSLog(@"CGImageSourceCopyPropertiesAtIndex: %@", dictRef);
CFRelease(imgSource);
system([[NSString stringWithFormat:@"exiftool '%@'", path] UTF8String]);
}
@end
/*
2011-05-21 11:22:58.140 ExifTest[4510:903] NSImageEXIFData: {
ApertureValue = 6;
...
FNumber = 8;
...
MaxApertureValue = 3;
...
}
2011-05-21 11:22:58.154 ExifTest[4510:903] CGImageSourceCopyPropertiesAtIndex: {
...
"{Exif}" = {
ApertureValue = 6;
...
FNumber = 8;
...
MaxApertureValue = 3;
...
ExifTool Version Number : 8.51
...
F Number : 8.0
...
Aperture Value : 8.0
...
Max Aperture Value : 2.8
*/
Обновление: это не я. Вот данные EXIF, представленные приложением Apple Preview:
