Настройка вида захвата изображения в классе AVCaptureStillImageOutput

Я использую классы AVCaptureConnection и AVCaptureStillImageOutput для создания наложенного экрана и захвата изображения. В представлении у меня есть настраиваемая панель вкладок с некоторыми пользовательскими элементами управления, такими как кнопка захвата, кнопка вспышки и т. д.

Проблема в том, что камера захватывает все изображение, и оно видно на странице предварительного просмотра, т.е. настраиваемая панель вкладок имеет размер 40 пикселей, поэтому пользователю отображается область захвата с панелью вкладок. Пользователь переносит изображение на настраиваемую панель вкладок. но на экране предварительного просмотра изображение расширяется, и он видит больше, чем изображение, которое он сделал .

Я попытался найти свойство в AVCaptureConnection, чтобы установить область захвата, но ничего не нашел. Кто-нибудь уже сталкивался с проблемой, пожалуйста, помогите. 1-й экран, на котором пользователь делает снимок

Как видите, пользователь видит лишнее помимо того, что он взял.

снятое изображение


person dead_soldier    schedule 23.05.2013    source источник


Ответы (1)


Я не думаю, что есть способ установить область захвата в AVCaptureConnection. Вместо этого вы можете попытаться прочитать изображение с экрана, а затем обрезать его в соответствии с вашими требованиями.

Если UIImage *photoImage — это изображение, возвращаемое при захвате фотографии

CGRect refRect; //Define this to the exact frame which you want to crop the larger image to i.e. with smaller frame.size.height
CGFloat deviceScale = photoImage.scale;
CGImageRef imageRef = CGImageCreateWithImageInRect(photoImage.CGImage. refRect);
UIIImage *finalPhoto = [[UIImage alloc] initWithCGImage:imageRef deviceScale orientation:photoImage.imageOrientation];

FinalPhoto теперь будет обрезан до того, что вы хотите

person Kedar    schedule 26.05.2013