2012-06-27 85 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

相关问题