2013-03-18 77 views
2

我正在使用ios CGImageSourceCopyPropertiesAtIndex爲ios上的圖像提取大量元數據。但我無法提取所有元數據,如Mac Preview應用程序或exiftool命令中顯示的元數據。從元數據中提取圖像圖片樣式

我很少思考「圖片風格」和「佳能」信息。

如何我讀的元數據:

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

任何人有提示嗎?

這是使用預覽

enter image description here

這是從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; 
}; 
} 
+0

不確定你使用這些數據,但圖像不能保證包含任何元數據或exif數據,更不用說它不是一個標準,所以每個圖像可能會有所不同。 – Tim 2013-03-25 21:10:41

+0

我試圖提取外部相機拍攝的照片信息。當在桌面程序中這樣做時,比使用CGImageSourceRef時更多的信息是可用的。所以想知道是否可以使用現有的庫來獲取更多的信息。 – stoffer 2013-03-27 07:47:21

回答

1

注意kCGImagePropertyMakerCanonDictionarykCGImagePropertyExifAuxDictionary,並且kCGImagePropertyTIFFDictionary都不是CGImageSourceCopyPropertiesAtIndex理解選項。它們是它返回字典中的關鍵字。它似乎沒有導致任何問題通過它們,但它也沒有達到任何目的。

沒有聲明的屬性鍵來訪問我可以看到的圖片樣式數據,但它看起來好像總是返回CGImageSourceCopyPropertiesAtIndex。如果您轉儲出props字典,您應該會看到一個包含感興趣信息的字典的密鑰{PictureStyle}。您還會看到一個{MakerCanon}密鑰。這對應於常數kCGImagePropertyMakerCanonDictionary,該字典中的屬性在relevant section of the documentation中描述。

+0

是的 - 這是一些舊的測試代碼的代碼片段。瞭解瞭如何使用CGImageSourceCopyPropertiesAtIndex。我的問題是,當使用該功能時,道具中沒有{MakerCanon}或{PictureStyle},但是在使用MacOS Preview時,存在有關圖片的信息。已使用相關屏幕截圖和道具轉儲更新了該職位 – stoffer 2013-04-02 07:54:39

+0

您正在測試此操作系統的哪個版本?我在OS X 10.8.x上進行了測試,並能夠從佳能和奧林巴斯相機捕獲的原始圖像中檢索圖片樣式和製造商特定的數據。我希望它在iOS 6.x上的工作方式與在OS X 10.8.x上的工作方式相同。 – bdash 2013-04-02 08:01:16

+0

我正在測試OS X 10.8.3和iOS 6.1.3。在OS X上運行良好,不在iOS中 – stoffer 2013-04-02 08:11:55