4

我正在使用图像选择器从 iPhone 设备的图库中选择图像。我必须以与图库中相同的名称保存这些图像。我不想在选择图像后给它起不同的名字。选择图像后,我尝试打印信息字典。它给出了图像、url、路径和类型..但是如何获得图像的实际名称任何想法。以下是我在 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";
        }
)

我的问题是从上面获取实际名称的任何方法。

4

3 回答 3

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];
于 2012-06-27T09:54:51.910 回答
4

从图库中挑选的图像,没有“名称”。您永远不会为刚从相机捕获的图片指定名称,即使您通过 iTunes 添加图像,原始文件名也会被删除并替换为 iTunes 理解用于同步的文件名。

这些文件名不适合程序员访问,因为它们可能会在未来的同步中被其他一些图像替换。

一个很好的方法是将当前日期指定为文件名,同时保存到从图库中挑选的图像。您可以将它保存在您的文档或库目录中,并使用映射 PList 文件将图像映射到它们的文件名。

或者,您也可以指定唯一编号作为文件名,并使用这些值访问图像。

尽管您提到您不想分配新名称,但不幸的是,这是解决此问题的唯一方法。

于 2012-06-27T10:32:51.940 回答
0

我不认为他们有名字。我在我的应用程序中使用的是用NSDate(当前日期)作为名称保存它们。

于 2012-06-27T09:43:54.293 回答