拍照后编辑图像

我目前正在制作一个iPhone应用程序,用户拍摄照片或从相册中select,然后在图像上放置覆盖图。 用户可以缩放,旋转和保存图像。 目前,我可以拍照,或select一张专辑。 至于覆盖,我只是使用UIImageView并将其放置在“接口”构build器的层次结构的顶部。 对于相机,我使用这个代码:

-(IBAction)getPhoto:(id)sender { // Create an image picker controller UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init]; if((UIButton *) sender == choosePhotoBtn) { // Set source to photo albums imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; } else { // Set source to camera imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.showsCameraControls = YES; } // Delegate is self imagePicker.delegate = self; // Allow editing of image imagePicker.allowsEditing = YES; // Show image picker [self presentModalViewController:imagePicker animated: YES]; } -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { // Dismiss modalviewcontroller [picker dismissModalViewControllerAnimated:YES]; // Displaying image to the imageView imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; // Access the uncropped image from info dictionary UIImage * image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; // Save Image UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); [picker release]; } 

我现在遇到的问题是在拍摄照片后对照片进行编辑。 我如何定制相机的行为?

  1. select使用相机或从相册中获取照片

  2. 一旦被选中,覆盖图像将变成一个我在脸上放置了“圆圈”的图像,并且照片将像面具一样在下面。 这个视图也可以全屏编辑。 你可以旋转,缩放和移动图像,直到你点击完成。

我已阅读手册中的这一部分,但似乎无法理解如何使用它。 http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIImagePickerController_Class/UIImagePickerController/UIImagePickerController.html

希望有人能指点我正确的方向。

非常感谢。 -Hakimo

有一种方法不要改变你的代码太多:

 - (IBAction)takePicture:(id)sender { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera]; } else { [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; } [imagePicker setAllowsEditing:YES]; [imagePicker setDelegate:self]; //place image picker on the screen [self presentViewController:imagePicker animated:YES completion:nil]; } 

如果你想使用编辑后的图像,请将“UIImagePickerControllerOriginalImage”更改为“UIImagePickerControllerEditedImage”,就是这样!

对于Q1,是否可以实施一个操作表,以便用户可以select使用相册中的照片或拍摄新的照片。 与行动表function如下所示:

 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { picker = [[UIImagePickerController alloc]init]; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.delegate = self; [self presentModalViewController:picker animated:YES]; [picker release]; } else if (buttonIndex == 1) { if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { picker = [[UIImagePickerController alloc]init]; picker.sourceType = UIImagePickerControllerSourceTypeCamera; picker.allowsEditing = YES; picker.delegate = self; [self presentModalViewController:picker animated:YES]; [picker release]; } else { UIAlertView *noCameraMsg = [[UIAlertView alloc] initWithTitle:@"no camera on this phone" message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [noCameraMsg show]; [noCameraMsg release]; } }