【问题标题】:saving images with UIImagePickerController使用 UIImagePickerController 保存图像
【发布时间】:2012-06-18 20:14:29
【问题描述】:

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

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

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 not allowed

提前致谢

【问题讨论】:

  • 不确定这是否是您所说的子文件夹,但如果您指的是具有自定义名称的相册,我使用了这个类别。 touch-code-magazine.com/…
  • 您需要将图片保存在照片库而不是文档目录中,对吗?
  • 如果一定是照片库,那就是我自己的相册/子目录。但是我需要从代码中创建专辑/子目录。与文档目录相同

标签: iphone ios5 uiimage uiimagepickercontroller


【解决方案1】:

您不能为照片库图像指定文件名。 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

【讨论】:

    【解决方案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 路径。将照片保存到照片库的唯一方法是使用适当的公共方法。无需检查目录是否存在,操作系统将负责管理照片库所需的所有“幕后”任务。

    【讨论】:

      猜你喜欢
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      相关资源
      最近更新 更多