Przytnij obraz do kwadratu zgodnie z rozmiarem UIView / CGRect

Mam implementację AVCaptureSession, a moim celem jest, aby użytkownik zrobił zdjęcie i zapisał tylko część obrazu w czerwonej ramce, jak pokazano poniżej:

AVCaptureSession'spreviewLayer (kamera) rozciąga się od(0,0) (u góry po lewej) na dole paska sterowania aparatem (pasek tuż nad widokiem zawierającym migawkę). Mój pasek nawigacyjny i pasek kontrolny są półprzezroczyste, dzięki czemu kamera może się przejrzeć.

używam[captureSession setSessionPreset:AVCaptureSessionPresetPhoto]; aby upewnić się, że oryginalny obraz zapisany w rolce aparatu jest jak kamera Apple.

Użytkownik będzie mógł zrobić zdjęcie w układzie pionowym, poziomym w lewo i w prawo, więc metoda przycinania musi to uwzględniać.

Do tej pory próbowałem przyciąć oryginalny obraz przy użyciu tego kodu:

DDLogVerbose(@"%@: Image crop rect: (%f, %f, %f, %f)", THIS_FILE, self.imageCropRect.origin.x, self.imageCropRect.origin.y, self.imageCropRect.size.width, self.imageCropRect.size.height);

// Create new image context (retina safe)
UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.imageCropRect.size.width, self.imageCropRect.size.width), NO, 0.0);

// Create rect for image
CGRect rect = self.imageCropRect;

// Draw the image into the rect
[self.captureManager.stillImage drawInRect:rect];

// Saving the image, ending image context
UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext();

Jednak gdy patrzę na przycięty obraz w rolce aparatu, wygląda na to, że właśnie zmiażdżył oryginalny obraz i nie odrzucił górnej i dolnej części obrazu, jak bym chciał. Powoduje to również 53 piksele białej przestrzeni na górze „przyciętego” obrazu, prawdopodobnie z powodu pozycji y mojegoCGRect.

To jest moje wyjście rejestrowania dlaCGRect:

 Image crop rect: (0.000000, 53.000000, 320.000000, 322.000000)

Opisuje to także ramkę czerwonego widoku granicznego w superwizji.

Czy jest coś ważnego, którego nie widzę?

P.S. Oryginalny rozmiar obrazu (zrobiony aparatem w trybie pionowym) to:

Original image size: (2448.000000, 3264.000000)

questionAnswers(3)

yourAnswerToTheQuestion