2011-07-01 5 views
3

イメージのタイムスタンプを取得しようとしていますが、正しい緯度と経度の値を取得できますが、タイムスタンプは常にイメージのEXIF時間ではなく現在の時刻を返します。ALAssetタイムスタンプが間違った日付を返す

ALAssetsLibraryAssetForURLResultBlock resultsBlock = ^(ALAsset *asset) { 
    CLLocation *imageLoc = [asset valueForProperty:ALAssetPropertyLocation]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"dd/MM/YY HH:mm:ss"]; 
    NSString *trailTime = [formatter stringFromDate:imageLoc.timestamp]; 
    NSLog(@"---+++ image TimeStamp: %@", trailTime); 
    [formatter release]; 

すべてのヘルプ感謝、感謝

答えて

3

私は私の辞書形式のメタデータ全体を与えた何の答え を見つけOKだった:

NSDictionary *metadata = asset.defaultRepresentation.metadata; 

//が、これは他の人に役立ちます願っています。

13

あなたがALAssetPropertyDateキーを使用して日付を取得する必要があります。

NSDate * date = [asset valueForProperty:ALAssetPropertyDate]; 
/* Use the `NSDateFormatter` instance to print the date */ 
+2

ありがとう、これは画像が保存された日時を返します。だから画像が編集されたり、写真アプリで撮影された後、カメラロールに転送された場合、日付/時刻は間違っています。 – RexMac66

+0

OK答えを見つけました:ALAssetPropertyLocationタイムスタンプには日付のみが含まれています。 ディクショナリ形式のメタデータ全体には、次のものがあります。 NSDictionary * metadata = asset.defaultRepresentation.metadata; 他人に役立つことを願っています。 – RexMac66

+0

@ RexMac66あなたはそれを回答として投稿し、それを受け入れるか、上記の回答を受け入れて問題解決に役立てる必要があります。このようにして将来の読者は何がうまくいったのか知ることができます – chown

1

日付を取得するために場所を取得しているようです。

 

    ALAssetsLibrary *assetsLib = [[ALAssetsLibrary alloc] init]; 

    [assetsLib enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos 
          usingBlock:^(ALAssetsGroup *group, BOOL *stop) { 

           [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { 

            //If you'd want to directly fetch from it's external property, which seems more appropriate. 
            NSDate *date = [result valueForProperty:ALAssetPropertyDate]; 
            NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
            [dateFormatter setLocale:[NSLocale currentLocale]]; 
            [dateFormatter setDateFormat:@"dd-mm-yyyy hh:mm:ss ZZZ"]; 
            NSString *stringDate = [dateFormatter stringFromDate:date]; 

            //If you'd want to fetch the date from metaData 
            ALAssetRepresentation *assetRep = [result defaultRepresentation]; 
            NSDictionary *dictionaryOfMetaData = [assetRep metadata]; 

            NSLog(@"dictionary:%@ \n \ 
              date:%@ \n \ 
              StringDate:%@", [[dictionaryOfMetaData valueForKey:@"{TIFF}"] valueForKey:@"DateTime"], 
              date, 
              stringDate); 
           }]; 
          } 
          failureBlock:^(NSError *error) { 
           //Handle Error! 
          }]; 
 
+0

ありがとう、私はそれをチェックアウトします。 – RexMac66