Обрезать изображение до квадрата в соответствии с размером UIView / CGRect
У меня есть реализация AVCaptureSession, и моя цель состоит в том, чтобы пользователь сделал фотографию и сохранил только часть изображения в пределах границы красного квадрата, как показано ниже:
AVCaptureSession-хpreviewLayer
(камера) простирается от(0,0)
(вверху слева) в нижней части панели управления моей камерой (панель чуть выше вида с затвором). Моя панель навигации и панель управления полупрозрачны, поэтому камера может просвечивать.
м использую[captureSession setSessionPreset:AVCaptureSessionPresetPhoto];
чтобы гарантировать, что исходное изображение, сохраняемое в рулон камеры, похоже на Apple 'с камерой.
Пользователь сможет сделать снимок в портретной, альбомной и правой ориентации, поэтому метод обрезки должен учитывать это.
Пока что ямы попытались обрезать исходное изображение, используя этот код:
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();
Однако, когда я смотрю на обрезанное изображение в рулоне камеры, кажется, что оно только что раздавило исходное изображение, а не отбросило верхнюю и нижнюю части изображения, как я ».мне нравится Это также приводит к 53 пикселям пустого пространства в верхней части "обрезанный» изображение, вероятно, из-за позиции у моего.CGRect
Это мой вывод журнала для:CGRect
Image crop rect: (0.000000, 53.000000, 320.000000, 322.000000)
Это также описывает кадр с красной рамкой в суперпредставлении.
Есть ли что-то важное, что ям с видом?
Постскриптум Исходный размер изображения (снятый камерой в портретном режиме):
Original image size: (2448.000000, 3264.000000)