iOS - 在将应用程序保存到iPhone设备库之前,是否可以重命名图像文件名?

时间:2014-03-27 11:41:38

标签: ios iphone camera uiimagepickercontroller

嘿,我是iPhone的新手,我一直在尝试制作一种类似的应用程序。基本上,我想要做的是我需要将所有捕获的图像保存到特定文件夹中,例如与我们在iPhone设备库中的应用名称相关的新专辑“My_App Images”,它对我有用,但我遇到了麻烦更改图像文件名,我不知道是否可以指定文件名?使用iPhoto,目前我将图像文件名称设置为“IMG_0094.jpg”,我们可以通过编程方式更改任何其他文件名,如“Anyfilename.png”格式吗?

这是我将图像保存到特定相册的代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{    
    [self.library saveImage:image toAlbum:@"My_App Images" withCompletionBlock:^(NSError *error) {
        if (error!=nil) {
            NSLog(@"Image saving error: %@", [error description]);
        }
    }];

    [picker dismissViewControllerAnimated:NO completion:nil];
}

赞赏任何参考资料或链接。谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

通过设置图像IPTC元数据字段"对象名称",有一种方法可以做到这一点。如果稍后将图像导入iPhoto,则此名称将用作其标题。

查看http://ootips.org/yonat/how-to-set-the-image-name-when-saving-to-the-camera-roll/的详细信息(和代码)。

答案 1 :(得分:0)

你的意思,

// Build NSData in memory from the btnImage...
NSData* imageData = UIImageJPEGRepresentation(image, 1.0);

// Save to the default Apple (Camera Roll) folder.   
[imageData writeToFile:@"/private/var/mobile/Media/DCIM/100APPLE/customImageFilename.jpg" atomically:NO];

现在根据您的文件夹名称调整文件夹路径...

答案 2 :(得分:0)

很抱歉让您失望,但似乎您无法在相册中保存之前或之后更改照片名称,无论是否自定义。这是一篇解释它的帖子:

iOS rename/delete albums of photos

修改


因此,为了澄清我的评论,请使用以下覆盖:

  • 下载图像here元数据的NSMutableDictionary类别。
  • 还从here下载示例项目CustomAlbumDemo,并将NSMutableDictionary+ImageMetadata.m项目中的CustomAlbumDemo文件修改为:

    -(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock
    {
        //write the image data to the assets library (camera roll)
        NSData* imageData = UIImageJPEGRepresentation(image, 1.0);
        NSMutableDictionary *metadata = [[NSMutableDictionary alloc] init];
        [metadata setDescription:@"This is my special image"];
        [self writeImageDataToSavedPhotosAlbum:imageData metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {
            //error handling
            if (error!=nil) {
                completionBlock(error);
                return;
            }

        //add the asset to the custom photo album
        [self addAssetURL: assetURL
                  toAlbum:albumName
      withCompletionBlock:completionBlock];
    }];
    

    //add the asset to the custom photo album [self addAssetURL: assetURL toAlbum:albumName withCompletionBlock:completionBlock]; }];