2013-02-12 36 views
0

我有一个SplitviewController,它显示图像列表。点击时,它将显示在主屏幕上,我想在其下面显示该图像的元数据。 我的图像是由一个自己写的类来管理的,它们将它们存储为UIImages。 我得到的只是嵌入作为的ressource文件,并通过iOS通过Splitview Controller加载的图像元数据

NSString* pathToImageFile = [[NSBundle mainBundle] pathForResource:imageName 
                   ofType:@"jpg"]; 
UIImage* img = [UIImage imageWithContentsOfFile:pathToImageFile]; 

用户已经通过imagePicker将图片添加到这个列表或者出库或相机的选择加载4张实例图片。

现在我需要一种方法来访问图像的元数据,当用户选择表中的一行。我知道UIImage不包含任何元数据,但有没有办法访问底层jpg并从中检索元数据?这里的主要问题是我有三个不同的图像来源(app directoy,相册,照相机)。 或者我需要重写我的图片商店类,它必须跟踪我的元数据或我的网址以及图片吗? 以下是我的didSelectRow方法,我想添加一个方法来检索所选图像的元数据。

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UIImage *img = [[[ImageStore sharedStore] getAllImages] objectAtIndex:[indexPath row]]; 
    self.detailViewController.detailItem = img; 
} 

感谢您的帮助!

回答

0

如果它在应用程序目录中,则可以直接读取该文件。这里有代码将使用CGImageSource获取元数据。

http://blog.depicus.com/index.php/2011/05/07/getting-exif-data-from-images-on-ios/

您开始使用ALAssetLibrary的照片库。最终,您将深入到具有元数据属性的ALAssetRepresentation

对于一个摄像头图片,说实话,我并不完全知道你怎么可以做到这一点,而不必先写入磁盘(照片库或应用程序目录)。