読者です 読者をやめる 読者になる 読者になる

UIImagePickerController で画像を取り込む

setAllowsEditing:YES で取得してるのはググればたくさんあったけど NO で取得してるのはあまり見かけなかったので記録

-(void)changeImage:(UILongPressGestureRecognizer *)sender{

  // インタフェース使用可能なら

  if ( [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary] ) {

    // UIImageControllerの初期化

    UIImagePickerController *ipc = [[UIImagePickerController alloc] init];

    [ipc setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

    // Delegateセット

    [ipc setDelegate:self];

    // NOに設定。yesでトリミングして画像を切り取る(その範囲の設定がめんどくさそう

    [ipc setAllowsEditing:NO];

    // 指定したViewを一番上に表示する

    [self presentViewController: ipc animated:YES completion:nil];

  }

}

 

//イメージ取得後に呼び出される関数

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

  [picker dismissViewControllerAnimated:YES completion:nil];

  // 選択したイメージをimageにセットする

  UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

  // imageをImageViewerにセットする

  NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];

    //画像縮小比率固定で fit

    _chara.contentMode = UIViewContentModeScaleAspectFit;

    [self.chara setImage:image];

    NSData *data = UIImagePNGRepresentation(image);

    NSString *path = [NSString stringWithFormat:@”%@/test.png”,[NSHomeDirectory() stringByAppendingPathComponent:@”Documents”]];

    if ([data writeToFile:path atomically:YES]) {

      NSLog(@”save OK”);

    } else {

      NSLog(@”save NG”);

    }

  [self dismissViewControllerAnimated:YES completion:NULL];

}

UIImagePickerControllerOriginalImage で受け取れば問題なく画像を取得できる