使用UIImagePickerController保存图像

时间:2012-06-18 20:14:30

标签: iphone ios5 uiimage uiimagepickercontroller

我正在尝试保存用户使用相机拍摄的图像

1)如果我使用UIImageWriteToSavedPhotosAlbum,我似乎无法分配我想要的fileName。怎么样,你能选择文件名吗?
  使用此选项的好处是
    [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
然后给出照片库目录的缩略图库。

2)这导致我的下一个问题可以     [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];用于从您自己的个人目录中获取图片?

3)无论如何以编程方式在照片库中创建子文件夹

4)最后,

NSArray  *paths    = NSSearchPathForDirectoriesInDomains(NSPicturesDirectory, NSUserDomainMask, YES);
if (![[NSFileManager defaultManager] fileExistsAtPath:[paths objectAtIndex:0] isDirectory:&isDir]) {
        NSError  *error;
        [[NSFileManager defaultManager] createDirectoryAtPath:[paths objectAtIndex:0 withIntermediateDirectories:YES attributes:nil error:&error];
}


检查NSPicturesDirectory是否存在,以便我可以写入它  我不断收到Cocoa错误513

提前致谢

2 个答案:

答案 0 :(得分:5)

您无法为照片库图像指定文件名。 ios将名为 asset url 的文件名分配给保存到照片库的图像,我们无法更改。

如果您需要将图像保存到照片库,可以使用ALAssetsLibrary

    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
   [library writeImageToSavedPhotosAlbum:[image CGImage] orientation:(ALAssetOrientation)     [image imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){
    if (error)
    {
     // Eror
    }
    else
    {
     // Success
    }
   }];
   [library release];

有关更多信息,请查看: How to save picture to iPhone photo library?

Save image in UIImageView to iPad Photos Library

答案 1 :(得分:2)

1)。

要保存您选择的文件名,您需要将图像保存到文档目录中。这可以很容易地完成:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo 
{
    NSString *current = [NSString stringWithFormat:@"%@/%@",PHOTODATA_PATH,currentItem];

    UIGraphicsBeginImageContext(CGSizeMake(160,160));
    [image drawInRect:CGRectMake(0,0,160,160)];
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    NSData * thumbSize = UIImageJPEGRepresentation(scaledImage, 1.0);
    [thumbSize writeToFile:[NSString stringWithFormat:@"%@_thumb.jpg",current] atomically:YES];

    NSData * fullSize = UIImageJPEGRepresentation(image, 1.0);
    [fullSize writeToFile:[NSString stringWithFormat:@"%@.jpg",current] atomically:YES];

    [self dismissModalViewControllerAnimated:YES];
}

当然,可能需要对此代码进行编辑以符合您的具体情况,但会提供基本的理解以及使用NSData将照片保存到文件的方式。

2)。

是的,UIImagePickerControllerSourceTypePhotoLibrary将访问您设备上的照片库。使用此功能可以访问保存或从相机胶卷中拍摄的所有照片。

3。)

不,您无法使用应用程序在照片库中创建子文件夹。这可以使用iPhoto或iTunes等完成。

4)。

您只能访问沙盒环境中包含的DocumentsLibrary路径。将照片保存到照片库的唯一方法是使用适当的公共方法。无需检查目录是否存在,操作系统将负责管理照片库所需的所有“幕后”任务。