我正在使用图片选择器从iPhone设备中的图库中选择图像。我必须使用库中的同名保存这些图像。我不想在选择图像后将其命名为不同。我在选择图像后尝试打印信息字典。它提供图像,网址和路径和类型..但如何获得图像的实际名称任何想法。以下是我在didFinish中获得的内容
- (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 :(得分:5)
使用AssetsLibrary框架,您可以从信息词典中获取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];
答案 1 :(得分:4)
从图库中挑选的图片,没有'名字'。您永远不会为刚刚从相机拍摄的照片指定名称,即使您通过iTunes添加图像,原始文件名也会被删除,并替换为iTunes理解用于同步的文件名。
这些文件名不适合程序员访问,因为在将来的同步中它们可能被其他一些图像替换。
关于此问题的一个好方法是将当前日期指定为文件名,同时保存为从图库中挑选的图像。您可以将其保存在文档或库目录中,并使用映射PList文件将图像映射到其文件名。
或者,您也可以将唯一编号指定为文件名,并使用这些值访问图像。
虽然你提到你不想分配新的名字,但不幸的是,这是唯一的方法。
答案 2 :(得分:0)
我认为他们没有名字。我在我的应用程序中使用的是用NSDate
(当前日期)作为名称保存它们。