【问题标题】:How to save taken photo如何保存拍摄的照片
【发布时间】:2013-07-16 03:25:17
【问题描述】:

我想保存我在应用中拍摄的照片。我想保存图片,这样即使我关闭应用程序,图片仍会保存。这是我写到现在的代码

-(IBAction)TakePhoto {
    picker = [[UIImagePickerController alloc]init];
    picker.delegate = self;
    [picker setSourceType:UIImagePickerControllerSourceTypeCamera];
    [self presentViewController:picker animated:YES completion:nil];
}

- (IBAction)ChooseExisting {
    picker2 = [[UIImagePickerController alloc]init];
    picker2.delegate = self;
    [picker2 setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    [self presentViewController:picker2 animated:YES completion:nil];
}

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [imageview setImage:image];
    [self dismissViewControllerAnimated:YES completion:nil];

}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [self dismissViewControllerAnimated:YES completion:NULL];
}

我应该如何让应用程序保存我拍摄的照片并显示它。

【问题讨论】:

  • 您想将它保存在用户的相机胶卷中吗?还是在您自己的应用程序中?前者只是UIImageWriteToSavedPhotosAlbumC函数。

标签: iphone ios save photo


【解决方案1】:
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;

UIImage * imageToSave = [UIImage imageNamed:@"Icon.png"];
NSData * binaryImageData = UIImagePNGRepresentation(imageToSave);

[binaryImageData writeToFile:[basePath stringByAppendingPathComponent:@"myfile.png"] atomically:YES];

Copied from here

您可能需要使用 imageToSave 变量编辑该行并将其更改为 UIImage 变量,这是您从相机获得的。

【讨论】:

    【解决方案2】:

    用你的方法试试这个:

    - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
        image = [info objectForKey:UIImagePickerControllerOriginalImage];
        [imageview setImage:image];
    
        //Save Your Image ======
        UIImage *yourImage  = imageView.image;//imageView.image;
        NSString *docDirPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
        NSString *filePath = [docDirPath stringByAppendingPathComponent:@"myImageFile.png"];
        [UIImagePNGRepresentation(yourImage) writeToFile:filePath atomically:YES];
    
    
    
        [self dismissViewControllerAnimated:YES completion:nil];
    
    }
    

    在你 viewDidLoad 的同一个类中这样写:

     //For Get your Image from Documents Dir
        NSString *docDirPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
        NSString *filePath = [docDirPath stringByAppendingPathComponent:@"myImageFile.png"];
    
        if([[NSFileManager defaultManager] fileExistsAtPath:filePath])
        {
    //if file already saved then set it on your imageView
            UIImage *getYourImage = [UIImage imageWithContentsOfFile:filePath];
            imageView.image = getYourImage;
        }
        else
        {
    //otherwise set a Dummy Image on your ImageView or nil
            imageView.image = nil; //[UIImage imageNamed:@"dummyImage.png"];
    
        }
    

    【讨论】:

      【解决方案3】:

      // 调用该方法从摄像头抓图

      - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
      {
          //Get image
          UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
          //Display in ImageView object (if you want to display it
          [imageView setImage:image];
              [ButtonName setImage:image forState:UIControlStateNormal];
          //Take image picker off the screen (required)
          [self dismissModalViewControllerAnimated:YES];
      }
      

      // 保存图像:

      - (NSString *)saveImage:(UIImage*)image:(NSString*)imageName 
      {    
          NSData *imageData = UIImagePNGRepresentation(image); //convert image into .png format.    
          NSFileManager *fileManager = [NSFileManager defaultManager];//create instance of NSFileManager
          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it
          NSString *documentsDirectory = [paths objectAtIndex:0]; //create NSString object, that holds our exact path to the documents directory
          NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]]; //add our image to the path
          [fileManager createFileAtPath:fullPath contents:imageData attributes:nil]; //finally save the path (image)
          NSLog(@"FULL PATH %@",fullPath);
          NSLog(@"image saved");
          return fullPath;
      }
      

      // 删除图像

      - (void)removeImage:(NSString*)fileName 
      {   
      
          NSFileManager *fileManager = [NSFileManager defaultManager];
      
          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
      
          NSString *documentsDirectory = [paths objectAtIndex:0];
      
          NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", fileName]];
      
          [fileManager removeItemAtPath: fullPath error:NULL];
      
          NSLog(@"image removed");    
      }
      

      // 从图库中加载图片

      - (UIImage*)loadImage:(NSString*)imageName
       {
      
          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
      
          NSString *documentsDirectory = [paths objectAtIndex:0];
      
          NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", imageName]];
      
          NSLog(@"Loading Image Path : %@",fullPath);
      
          return [UIImage imageWithContentsOfFile:fullPath];
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-30
        相关资源
        最近更新 更多