私はこれを永遠にやろうとしてきました。カメラオーバーレイがあります。最終的な画像を、内蔵カメラから表示できる画像の一部にしたいと考えています。私がしたことは、カメラの正方形に等しい寸法の CGRect を作成することでした。次に、この関数を使用してトリミングしてみました。
- (UIImage *)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{
CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return croppedImage;
}
私はこう呼んだ
CGRect rect = CGRectMake(10, 72, 300, 300);
UIImage *realImage = [self imageByCropping:[self.capturedImages objectAtIndex:0] toRect:rect];
私が得るのは、向きが間違っている低品質の画像です。
::編集::
Nitinの答えで、画面の正しい部分をトリミングできますが、問題は、カメラビューに続くビュー、「確認ビュー」をトリミングすることです。これは、Nitinのコードが使用しているためだと思われます
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
確認ビューのView Controllerは、このコードが実行されているControllerであるため、これがすべて発生しているViewControllerです。これを小さな地図で説明しようと思います
CameraOverlay.xib (この xib を使用してオーバーレイを作成します) <===== CameraOverlayViewController ---------> ConfirmationView
そのため、最初に ViewController が呼び出されると (タブ バーのボタン)、その上にオーバーレイが表示されたカメラ (UIImagePickerController) が開きます。次に、ユーザーが画像をクリックすると、その画像が ConfirmationView に表示されます。
私が考えている
のは、UIGraphicsBeginImageContextWithOptions(self.view.frame.size, YES, 1.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
これらの行が実行されているときです。そのときのビューは ConfirmationView です。
注:関数を呼び出します
(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
方法。