2012-06-27 133 views
4

我正在使用圖像選擇器從iPhone設備中的圖庫中選取圖像。我必須以圖庫中的相同名稱保存這些圖像。我不想在選取圖像後將其命名爲不同。我嘗試在選取圖像後打印信息詞典。它給圖像,網址和路徑和類型..但如何獲得圖像的實際名稱任何想法。以下是我在didFinish得到我可以從iPhone中的照片獲取圖像的名稱

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
NSLog(@"Selected image info: %@",info); 

} 

此打印

Selected image info : (
     { 
     UIImagePickerControllerMediaType = "public.image"; 
     UIImagePickerControllerOriginalImage = "<UIImage: 0x617d390>"; 
     UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=1000000089&ext=JPG"; 
     } 
) 

我的問題是沒有辦法從上面得到的實際名稱。

+0

試試這個答案:http://stackoverflow.com/a/4314524/876283 – iNoob

+0

嘗試搜索元數據,但它看起來像你不能這樣做:http://stackoverflow.com/questions/3808082/iphone-的UIImagePickerController文件名稱 –

+0

所以事情不可能:( – rashii

回答

5

使用AssetsLibrary框架,您可以從info字典獲取referenceURL並獲取資產。像這樣的:

NSURL *assetURL = [info objectForKey:UIImagePickerControllerReferenceURL]; 

__block NSString *fileName = nil; 

ALAssetsLibrary *library = [[[ALAssetsLibrary alloc] init] autorelease]; 
[library assetForURL:assetURL resultBlock:^(ALAsset *asset) { 
    fileName = asset.defaultRepresentation.fileName; 
} failureBlock:nil]; 
+0

我不確定這是否給出圖像的名稱和更多的ALAssetsLibrary是可用的iOS 4.0和更高版本。較低版本的iOS :(。任何方式感謝您的信息 – rashii

+0

好的,你沒有提到你的問題和你接受的答案是錯誤的,文件在畫廊裏確實有名字。 – hwaxxer

+0

哦,但是什麼樣的名字,如何知道那些任何想法的結構? – rashii

0

我不認爲他們有一個名字。我在我的應用程序中使用的是,以NSDate(當前日期)作爲名稱來保存它們。

+0

爽兄弟..連我都用它保存在不同的名稱來完成。該問題是第二次當我的圖片我有比較,如果它已被保存或沒有 – rashii

4

從畫廊挑選的圖片,不要有'名稱'。您絕不會爲剛剛從相機拍攝的照片指定名稱,即使通過iTunes添加圖像,原始文件名也會被剝離並替換爲iTunes可識別進行同步的文件名。

這些文件名不適合程序員訪問,因爲它們可能會在未來的同步中被其他圖像替換。

對此的一個好處是將當前日期指定爲文件名,同時保存到從庫中選取的圖像。您可以將其保存在文檔或庫目錄中,並使用映射PList文件將圖像映射到其文件名。

或者,您也可以指定唯一的數字作爲文件名並使用這些值訪問圖像。

雖然你提到你不想分配新的名字,但不幸的是,這是唯一的辦法。

+0

感謝哥們。問題是我不想挑選之前已經被bicked過的圖像。所以,如果沒有名字,那麼必須是我想使用比較參數的編號。 – rashii

相關問題