2011-05-18 90 views
2

嘿家伙,我目前正试图从用户通过UIIMagePickerController选择的图像中获取EXIF数据。我似乎无法理解我将如何获得我可以用于CGImageSourceCreateWithURL((CFURLRef)someURL,nil)的路径。获取CGImageSourceRef的图像路径

当我尝试使用UIImagePickerControllerReferenceURL控制台吐出一个相当不错的错误:<ERROR> CGImageSourceCreateWithURLCFURLCreateDataAndPropertiesFromResource failed with error code -11.。我很难过,我开始认为我来自一个错误的角度,因为CGImageSourceRef类型通常用于创建一个图像,而我已经有一个UIImage。任何人都可以在这个问题上了解一些情况,请随时这样做。

- (void)imagePickerController:(UIImagePickerController*)pickerdidFinishPickingMediaWithInfo:(NSDictionary *)info {

NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
[self dismissModalViewControllerAnimated:YES]; 
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]){ 
    image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    NSLog(@"%@",[info objectForKey:UIImagePickerControllerReferenceURL]); 
    //Outputs: assets-library://asset/asset.JPG?id=1000000006&ext=JPG 
    CGImageSourceCreateWithURL((CFURLRef)[info objectForKey:UIImagePickerControllerReferenceURL], nil); 

    //The plan is to somehow get a CGImageSourceRef object from the 
    //UIImage provided by the [info UIImagePickerControllerOriginalImage], i just don't know how to get this object, 
    // for it requires the URL to the image, wich i don't seem to have. 
    } 

} 

CNC中 将使用更多的紧张所提供的解决方法。谢谢阅读。

+0

你能发表一些代码吗? – 2011-05-18 15:45:41

+0

如果这对你有帮助,你应该+1颠簸@more_tension。 – 2011-05-18 17:10:47

+0

我碰到了实际的答案,它进一步下降:) – Uxxish 2011-05-18 17:12:46

回答

5

错误代码-11意味着URL方案无法识别,也就是说CFURL不知道如何处理以assets-library开头的URL://。

为什么你认为在这种情况下你需要一个CGImageSourceRef?

+0

因为我打算使用ImageIO框架从图像中读取EXIF数据。此方法('CGImageSourceCopyPropertiesAtIndex')需要传递一个CGImageSourceRef对象作为参数。我想我还需要使用'CGImageSourceRef',它实际上是对'UIImagePickerController'返回的图像的引用。我只是不知道如何去检索正确的URL。我认为资产URL并不是我正在寻找的,因为我尝试了'ALAsset'框架,结果不够。 – Uxxish 2011-05-18 16:15:04

+1

解决方法可能是在本地保存原始图像数据,然后使用'CGImageSourceCreateWithURL'来获取'CGImageSource'。 – 2011-05-18 16:33:54

+0

嗯,这可能是一种可能性,我将不得不确保所有的EXIF数据都保留在这个过程中,但是谢谢你! – Uxxish 2011-05-18 16:45:40

-1

尝试使用

ALAssetRepresentation *表示= [yourAsset defaultRepresentation];
NSDictionary * metadataDict = [[representation metadata] retain];

+0

[表示元数据]不会返回像Camera或光圈等所有EXIF信息。 – Jordan 2013-10-07 18:00:33