2013-03-18 2 views
2

ios에서 이미지의 많은 메타 데이터를 추출하기 위해 ios CGImageSourceCopyPropertiesAtIndex를 사용하고 있습니다. 하지만 Mac Preview App 또는 exiftool 명령에 표시된 것과 같은 모든 메타 데이터를 추출 할 수는 없습니다.메타 데이터에서 이미지 그림 스타일 추출하기

대부분 "픽쳐 스타일"및 "캐논"정보가 누락되었습니다.

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

누구나 힌트를 가지고 :

나는 메타 데이터를 읽고 있어요 어떻게? kCGImagePropertyMakerCanonDictionary, kCGImagePropertyExifAuxDictionarykCGImagePropertyTIFFDictionaryCGImageSourceCopyPropertiesAtIndex 이해 옵션이 아니라는 것을

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

+0

외부 카메라로 촬영 한 사진의 정보를 추출하려고합니다. 데스크톱 프로그램에서이를 수행 할 때 CGImageSourceRef를 사용할 때보 다 많은 정보를 사용할 수 있습니다. 기존 라이브러리를 사용하여 더 많은 정보를 얻을 수 있는지 궁금합니다. – stoffer

답변

1

참고 :

이는 NSLog의 정보입니다 미리

enter image description here

사용 정보입니다. 그것들은 반환하는 사전의 키입니다. 그것들은 어떤 문제도 일으키는 것으로 보이지 않지만, 아무 것도 성취하지 못합니다.

볼 수있는 그림 스타일 데이터에 액세스하는 데 선언 된 속성 키가 없지만 어쨌든 CGImageSourceCopyPropertiesAtIndex에 의해 반환 된 것처럼 보입니다. props 사전을 덤프하면 해당 정보가 포함 된 사전이 포함 된 {PictureStyle} 키가 나타납니다. {MakerCanon} 키도 표시됩니다. 이는 상수 kCGImagePropertyMakerCanonDictionary에 해당하며 해당 사전의 속성은 relevant section of the documentation에 설명 된 속성입니다.

+0

예 - 일부 오래된 테스트 코드의 코드 스 니펫이었습니다. CGImageSourceCopyPropertiesAtIndex를 사용하는 방법을 알아 냈습니다. 내 문제는 그 함수를 사용할 때 {MakerCanon}이나 {PictureStyle}이 소품에 없지만 MacOS Preview를 사용할 때 그림에 관한 정보가 있다는 것입니다. 관련 스크린 샷과 소품이 덤프 된 게시물을 업데이트했습니다. – stoffer

+0

테스트중인 OS 버전은 무엇입니까? 필자는 OS X 10.8.x에서 테스트했으며 Canon 및 Olympus 카메라에서 캡처 한 원시 스타일에서 사진 스타일과 제조업체 별 데이터를 검색 할 수있었습니다. OS X 10.8.x에서와 마찬가지로 iOS 6.x에서도 같은 방식으로 작동 할 것으로 기대됩니다. – bdash

+0

OS X 10.8.3 및 iOS 6.1.3에서 테스트 중입니다. iOS가 아닌 OS X에서 잘 작동합니다. – stoffer

관련 문제