iPhone - UIImagePickerController - >将图像保存到app文件夹

Tim*_*Tim 19 iphone objective-c uiimagepickercontroller uiimage

我有一个使用的iPhone应用程序UIImagePickerController.就像sourceType我一样

  • UIImagePickerControllerSourceTypePhotoLibrary
  • UIImagePickerControllerSourceTypeCamera
  • UIImagePickerControllerSourceTypeSavedPhotosAlbum

因此,用户可以从照片或相机照片中制作照片或从照片库中选择一张照片.

图像将显示在UIImageView中.如果用户关闭应用程序,则应保存图像.所以对于文本字段,我使用NSUserDefaults.我知道,使用NSData将图像保存在NSUSerDefaults中并不是一个好方法,所以我想将图像保存/复制到由我的应用程序控制的文件夹,类似于NSUserDefaults.

我怎样才能做到这一点?我想保存它,然后我可以将文件的路径写入我的NSUserDefaults并在应用程序启动时读取它.

提前谢谢你和最诚挚的问候.

knu*_*uku 49

您可以在UIImagePickerControllerDelegate委托实现中使用以下代码

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

    //obtaining saving path
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"latest_photo.png"];

    //extracting image from the picker and saving it
    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];   
    if ([mediaType isEqualToString:@"public.image"]){
        UIImage *editedImage = [info objectForKey:UIImagePickerControllerEditedImage];
        NSData *webData = UIImagePNGRepresentation(editedImage);
        [webData writeToFile:imagePath atomically:YES];
    }
}
Run Code Online (Sandbox Code Playgroud)

就这样

  • 我不得不使用[info objectForKey:UIImagePickerControllerOriginalImage]; 而不是UIImagePickerControllerEditedImage (3认同)

Bjö*_*lek 8

根据您要保存的文件格式,您可以使用

[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];
Run Code Online (Sandbox Code Playgroud)

要么

[UIImageJPEGRepresentation(image) writeToFile:path atomically:YES];
Run Code Online (Sandbox Code Playgroud)