簡體   English   中英

Xcode:從直接放在UIImageView中的相機拍攝的圖像

[英]Xcode: Image taken from camera directly placed in UIImageView

我試圖獲取從相機拍攝的圖像,然后將比拍攝的圖像放置到UIImageView中(不使用相機膠卷-只是直接從相機到UIImageView)。 我已經盡力了數周的嘗試來解決此問題,但沒有成功。 有誰知道為什么這不起作用?

僅供參考,我在做什么?

  1. 在下面使用此代碼
  2. 按下按鈕以打開相機用戶界面
  3. 按下拍攝按鈕拍攝圖像
  4. 按下“使用照片”按鈕選擇照片
  5. 期望將照片放置在屏幕上的UIImageView中(但不是...)
  6. 沮喪的感覺

如果一個明智的編碼器可以幫助我解決這個問題,我將不勝感激。 我覺得自己正在做我正在閱讀的所有事情,別人正在告訴我要做。 任何代碼類型的更正將非常有幫助。 謝謝!

 - (IBAction)cameraButtonPushed:(id)sender {

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == NO) {
    //todo if device has no camera

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Unable To Locate Camera" message:@"No Camera found." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

    [alert show];
}

else {

    UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
    cameraUI.delegate = delegate;
    cameraUI.allowsEditing = YES;
    cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;

    cameraUI.mediaTypes =
    [UIImagePickerController availableMediaTypesForSourceType: UIImagePickerControllerSourceTypeCamera];

    [self presentViewController:cameraUI animated:YES completion:^{

    }];

    }

}

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

[picker dismissViewControllerAnimated:YES completion:^{

    UIImage *takenImage = [info valueForKey:UIImagePickerControllerEditedImage];

    [self.navigationController pushViewController:self animated:YES];

    image = [[UIImageView alloc] initWithImage:takenImage];

}];

}

嘗試這個:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [picker dismissViewControllerAnimated:YES
                               completion:^{
                                   UIImage *takenImage = [info valueForKey:UIImagePickerControllerEditedImage];

                                   image = [[UIImageView alloc] initWithImage:takenImage];
                                   [self.view addSubview:image];

                                   //or if object is connected properly via IB then simply
                                   //[image setImage:takenImage];
                               }];
}

並且根據@DouglasFerreira的敏銳觀察

cameraUI.delegate = delegate;

應該

cameraUI.delegate = self;

如果imageIBOutlet ,則不必初始化它:它將由情節提要或XIB完成。 嘗試只設置圖像:

[image setImage: takenImage];

您可以使用以下代碼完成任務,但請確保將視圖控制器委托給UIImagePickerControllerDelegate,UINavigationControllerDelegate

- (IBAction)takePhoto:(id)sender {

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;

[self presentViewController:picker animated:YES completion:NULL];
}



- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {

UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
self.imageView.image = chosenImage;

[picker dismissViewControllerAnimated:YES completion:NULL];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM