能否从iPhone的照片中获取图片名称?

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";
        }
)

我的问题是有没有办法从上面获取实际名称。


尝试搜索元数据,但似乎无法实现:http://stackoverflow.com/questions/3808082/iphone-uiimagepickercontroller-file-name - Fabio Poloni
尝试这个答案:http://stackoverflow.com/a/4314524/876283 - iNoob
有些事情是不可能的 :( - rashii
有没有一种方法可以获取PHAsset文件(图像/视频)的存储大小? - Tejzeratul
3个回答

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];

我不确定这是否提供了图像的名称,而且ALAssetsLibrary仅适用于iOS 4.0及更高版本。我的iOS版本较低 :(. 无论如何,感谢您的信息。 - rashii
好的,你在问题中没有提到这一点,而你接受的答案是错误的,图库中的文件确实有名称。 - hwaxxer
哦,但是这些名字是什么样的呢?如何知道它们的结构?有任何想法吗? - rashii
1
IMG_0001.JPG,IMG_0002.JPG等。 - hwaxxer

4
从相册选择的图片没有名称。您不会为刚刚从相机拍摄的照片分配名称,甚至当您通过iTunes添加图片时,原始文件名也被删除并替换为iTunes了解同步的文件名。
这些文件名不适合程序员访问,因为它们可能在将来同步中被其他图像替换。
一个好的方法是为选自相册的图像分配当前日期作为文件名。您可以将其保存在文档或库目录中,并使用映射PList文件将图像映射到它们的文件名。
或者,您还可以为文件分配唯一的编号,并使用这些值访问图像。
虽然您提到您不希望分配新名称,但不幸的是,这是唯一可行的方法。

谢谢伙计。问题是我不想选择之前已经选择过的图像。所以如果不是名称,那么必须使用ID作为比较参数。 - rashii

0

我认为它们没有名称。在我的应用程序中使用的方法是,将它们保存为NSDate(当前日期)作为名称。


酷啊兄弟..我已经用不同的名称保存了它。问题是第二次选择图片时,我必须比较它是否已经被保存过。 - rashii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接