2

私はこれを永遠にやろうとしてきました。カメラオーバーレイがあります。最終的な画像を、内蔵カメラから表示できる画像の一部にしたいと考えています。私がしたことは、カメラの正方形に等しい寸法の 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方法。

4

1 に答える 1