iPhone iOS如何从相机胶卷图像中提取照片元数据和地理标记信息?

时间:2012-04-12 02:12:15

标签: iphone objective-c ios photo geotagging

  

可能重复:
  How Do I Get The Correct Latitude and Longitude From An Uploaded iPhone Photo?

我正在制作一个照片应用程序,想知道我使用地理标记照片的选项是什么。 我想显示拍摄照片的位置(类似于照片应用)。这可能吗?

此外,我需要知道拍摄照片的时间。我可以捕获我自己拍摄的照片的这些信息,但相机胶卷图像呢?

1 个答案:

答案 0 :(得分:13)

是的,这是可能的。

您必须使用ALAssetsLibrary访问相机胶卷。然后,您只需枚举您的照片并询问位置。

assetsLibrary = [[ALAssetsLibrary alloc] init];
groups = [NSMutableArray array];

[assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos  usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
    if (group == nil)
    {
        return;
    }

    [groups addObject:group];

} failureBlock:^(NSError *error)
{
    // Possibly, Location Services are disabled for your application or system-wide. You should notify user to turn Location Services on. With Location Services disabled you can't access media library for security reasons.

}];

这将枚举您的资产组。接下来,您选择一个组并枚举其资产。

ALAssetGroup *group = [groups objectAtIndex:0];
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
 {
     if (result == nil)
     {
         return;
     }

     // Trying to retreive location data from image
     CLLocation *loc = [result valueForProperty:ALAssetPropertyLocation];    
 }];

现在,您的loc变量包含拍摄照片的位置。您应该在使用前对ALErrorInvalidProperty进行检查,因为有些照片可能缺少这些数据。

您可以指定ALAssetPropertyDate以获取照片创建的日期和时间。