2013-08-23 100 views
1

我試圖使用ALAssetsLibrary類檢索設備內的照片列表以及它們的相關信息。我已經實現了一種方法,可以正確顯示圖像的數量,但目前我不知道如何找到照片信息如何寬度,高度,方向ecc ... 這是我正在使用的代碼:Objective-C/ALAssetsLibrary - 查找圖像信息和Exif信息

ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init]; 
[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { 
    if (group) { 
     [group setAssetsFilter:[ALAssetsFilter allPhotos]]; 
     [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop){ 
      if (asset){ 
       NSString *description = [asset description]; 
       NSLog(@"description %@", description); 

      } 
     }]; 
    } 
} failureBlock:^(NSError *error) { 
    NSLog(@"error enumerating AssetLibrary groups %@\n", error); 
}]; 

其實如果我登錄了我的NSString「說明」的變量,我收到這些信息(對於一個示例圖像):

「描述ALAsset - 類型:照片, 網址:資產庫:// asset/asset.JPG?id = 766424BD-D28D-47F9-8E0F-AD8F19C4C732 & ext = JPG「

現在,我需要了解如何找到其他信息(寬度,高度,名稱等),以及是否有可能訪問圖像的EXIF信息。

謝謝

回答

1

你很近。您不希望記錄資產的描述,而是希望記錄資產默認表示的元數據。以下將爲您提供一個包含圖像元數據的NSDictionary。然後,您可以使用標準的objectForKey調用來訪問像高度,寬度等屬性。

ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init]; 
[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { 
    if (group) { 
     [group setAssetsFilter:[ALAssetsFilter allPhotos]]; 
     [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop){ 
      if (asset){ 

       NSDictionary *data = [[asset defaultRepresentation] metadata]; 
       NSLog(@"%@",data); 
      } 
     }]; 
    } 
} failureBlock:^(NSError *error) { 
    NSLog(@"error enumerating AssetLibrary groups %@\n", error); 
}]; 
+0

啊該死!我真的太親近了。謝謝@ 0x7fffffff!有沒有辦法只問例如寬度?或者我必須採取數據變量,並只採取從我需要的片斷? – Hieicker

+1

非常感謝@ 0x7fffffff!你的例子很簡單明瞭! – Hieicker