ios - 如何从 UIImagePickerController 将图像保存到应用程序文件夹?

标签 ios objective-c iphone ios8 uiimagepickercontroller

我有一个让我抓狂的问题。我已经搜索了很多来解决它,但我发现的所有答案都是旧的并且没有帮助。

我目前正在开发使用 UIImagePickerControllerDelegatedidFinishPickingMediaWithInfo 的应用程序,我想将所选图像保存到应用程序文件夹。

到目前为止,我可以用它来选择图像;

- (IBAction)btnPressed:(UIButton *)sender
{
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
    {
        UIImagePickerController *imgPicker = [[UIImagePickerController alloc] init];
        imgPicker.delegate = self;
        imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        imgPicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
        imgPicker.allowsEditing = NO;

        [self presentViewController:imgPicker animated:YES completion:nil];
    }

}

但无法使用 didFinishPickingMediaWithInfo 将其保存到应用程序中;

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    [self dismissViewControllerAnimated:YES completion:nil];
    if ([mediaType isEqualToString:(NSString *) kUTTypeImage])
    {
        UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

        //Assigning the selected image to imageView to see on UI side.
        imageViewerImage.image = image;
    }
}

我想知道这一点之后应该是什么部分。

非常感谢您提供的任何帮助。

最佳答案

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{

    [self dismissViewControllerAnimated:YES completion:NULL];

UIImage* image;

if([[info valueForKey:@"UIImagePickerControllerMediaType"] isEqualToString:@"public.image"])
    {

  image = [info valueForKey:@"UIImagePickerControllerOriginalImage"];

 NSString *stringPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"New Folder"];

// New Folder is your folder name

 NSError *error = nil;

if (![[NSFileManager defaultManager] fileExistsAtPath:stringPath])
    [[NSFileManager defaultManager] createDirectoryAtPath:stringPath withIntermediateDirectories:NO attributes:nil error:&error];

NSString *fileName = [stringPath stringByAppendingFormat:@"/image.jpg"];

NSData *data = UIImageJPEGRepresentation(image, 1.0);

[data writeToFile:fileName atomically:YES];

   }
}

关于ios - 如何从 UIImagePickerController 将图像保存到应用程序文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28496019/

相关文章:

iphone - iOS MKMapView regionDidChangeAnimated visibleMapRect 问题

iphone - 支持 Retina 4"的最低 iOS 版本

ios - 继承属性,在从只读继承的属性中读写时不合成setter

ios - 苹果成员(member)中心登录错误

android - Phonegap 设备在 Android 和 iOS 上均未定义

ios - 哪些类型可以放入 AFNetworking POST 参数中?

ios - iOS内存泄漏的可能原因?

ios - NSMutableArray arrayWithCapacity 问题

ios - Cloudkit我们可以修改公共(public)数据库的数据吗

iphone - 如何在 iOS 上使用 libharu 以 2/3 行显示字符串?