0

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

1)如果我使用 UIImageWriteToSavedPhotosAlbum 我似乎无法分配我想要的文件名。怎么样,可以选择文件名吗?
使用此选项的好处是,
[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 not allowed

提前致谢

4

2 回答 2

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

更多信息查看: 如何将图片保存到 iPhone 照片库?

将 UIImageView 中的图像保存到 iPad 照片库

于 2012-06-18T20:33:14.513 回答
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路径。将照片保存到照片库的唯一方法是使用适当的公共方法。无需检查目录是否存在,操作系统将负责管理照片库所需的所有“幕后”任务。

于 2012-06-18T20:22:51.603 回答