ios 如何在相机应用程序中拍摄两张图像

w9apscun  于 2023-06-07  发布在  iOS
关注(0)|答案(1)|浏览(192)

我对这种编码很陌生,但已经学到了相当多的知识,不幸的是,我正在开发的一个应用程序遇到了挫折。
我正试图创建一个相机应用程序,将允许用户采取“之前”的图像,然后采取“之后”的图像,然后我想为图像的选项放在一起(左和右),并保存为一个图像。
到目前为止,我已经成功地编写了应用程序,以便使用下面的代码拍摄一张照片:
标题:

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController <UIImagePickerControllerDelegate,         UINavigationControllerDelegate>

@property (strong, nonatomic) IBOutlet UIImageView *beforeImage;

- (IBAction)cameraBeforeImage:(UIButton *)sender;

- (IBAction)libraryBeforeImage:(UIButton *)sender;

- (IBAction)deleteBeforeImage:(UIButton *)sender;

@property (strong, nonatomic) IBOutlet UIImageView *afterImage;

- (IBAction)cameraAfterImage:(UIButton *)sender;

- (IBAction)libraryAfterImage:(UIButton *)sender;

- (IBAction)deleteAfterImage:(UIButton *)sender;

- (IBAction)saveImages:(UIButton *)sender;
@end

实施:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
 {
[super viewDidLoad];
 }

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (IBAction)cameraBeforeImage:(UIButton *)sender {

if (![UIImagePickerController     isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    
    UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Oops!"
                                                          message:@"This Device Has No  Camera, Please Select An Image From Your Library."
                                                         delegate:nil
                                                cancelButtonTitle:@"OK"
                                                otherButtonTitles: nil];
    
    [myAlertView show];
    
}else{

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

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

}

- (IBAction)libraryBeforeImage:(UIButton *)sender {

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

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

- (IBAction)deleteAfterImage:(UIButton *)sender {
}

- (IBAction)saveImages:(UIButton *)sender {
}

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

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

[picker dismissViewControllerAnimated:YES completion:NULL];

}

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

}

- (IBAction)deleteBeforeImage:(UIButton *)sender {
}
- (IBAction)cameraAfterImage:(UIButton *)sender {
}

- (IBAction)libraryAfterImage:(UIButton *)sender {
}

- (IBAction)saveImages:(UIButton *)sender {
}

@end

以下是我需要添加的内容列表:

  • 在“After”按钮中添加与“Before”相同的功能,但要将图像存储在“afterImage”图像视图中。
  • 在“saveImages”按钮中添加功能,将两张拍摄的图像保存为一张拼接在一起的图像。
vsnjm48y

vsnjm48y1#

1 .第一个问题,我猜你的问题是“你怎么知道哪张照片是拍的,在哪里显示”?
答案1:创建两个UIImagePickerControllers作为属性。一旦imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info返回一个镜像,你可以简单地检查它是哪个控制器if( picker == afterPictureController){...
答案2:创建一个标志,指示下一张拍摄的照片是之前的还是之后的。它不是很灵活,但它工作。
2 .拼接两张图片时,可以创建大小为(image1Width+image2Width,MAX(image1Height,image2Height))的UIGraphicsBeginImageContext,使用该上下文绘制图片。之后,您可以通过调用UIGraphicsGetImageFromCurrentImageContext();从上下文中获取拼接图像

相关问题