2017-03-06 6 views
1

360 ° jpeg 파일에서 xmp 메타 데이터 정보를 가져 오려고합니다. 그래서, 나는이 코드를 작성하지만 난 XMP 정보하지 않았다 :ios의 jpeg에서 xmp 메타 데이터를 읽으십시오.

UIImage *img = [UIImage imageNamed:@"park_2048.jpg"]; 
    NSData *imagedata = UIImageJPEGRepresentation(img, 1); 
    CGImageSourceRef source = CGImageSourceCreateWithData((CFDataRef) imagedata, NULL); 
    CFDictionaryRef dictRef = CGImageSourceCopyMetadataAtIndex(source, 0, NULL); 
    NSDictionary* metadata = (__bridge NSDictionary *)dictRef; 
    NSLog(@"metadata = %@", metadata); 

나는 또한 경고했다을 : Incompatible pointer types initializing 'CFDictionaryRef' (aka 'const struct __CFDictionary *') with an expression of type 'CGImageMetadataRef _Nullable' (aka 'const struct CGImageMetadata *')

어떤 도움을 주시기 바랍니다

+0

'CGImageSourceCopyMetadataAtIndex()'는'CGImageMetadataRef'를 반환합니다. 어떻게하면'CFDictionaryRef'로 변환 될까요? 그래서 경고를받는 것입니다. 어쩌면'CGImageMetadataRef metadaRef = CGImageSourceCopyMetadataAtIndex (source, 0, NULL); NSArray * 메타 데이터 = CFBridgingRelease (CGImageMetadataCopyTags (메타 데이터)); 및 사전이 아닙니다 (출처 : http://stackoverflow.com/questions/25589118/stripping-all-exif-data-in-objective-c) – Larme

+0

감사합니다. 나는 CGImageMetadataRef로 변경하지만 난 단지 내가이 가진 모든 메타 데이터를하지 않았다 : ( \t EXIF ​​: PixelYDimension = 1024 \t EXIF ​​: PixelXDimension = 2048 \t 티파니 : 동향 = 1 \t EXIF ​​: ColorSpace로를 = 1 ) –

+0

모든 메타 데이터를 유지하려면 UIImage가 아닌 데이터로 파일 데이터 개체를 읽어야합니다. 나는이 아이디어를 사용하여 해결했습니다. 그래서 나는 모든 메타 데이터를 얻는다. –

답변

0

내가 모든 데이터를하지 않는 전달하여 해결 언어 :

NSString* path = [[NSBundle mainBundle] pathForResource:@"park_2048" ofType:@"jpg"]; 
NSData *data = [NSData dataWithContentsOfFile:path]; 
[self logMetaDataFromImage:data]; 

- (void) logMetaDataFromImage:(NSData*)imageData { 
    NSLog(@"%@",NSStringFromSelector(_cmd)); 
    CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL); 
    CGImageMetadataRef imageMetaData = CGImageSourceCopyMetadataAtIndex(source,0,NULL); 
    NSLog (@"meta data = %@",imageMetaData); 
}