2016-03-07 3 views
2

Как применить увеличение и уменьшение изображения на экране камеры Использование UIPinchGestureRecognizer и AVCaptureDevice. Не правильное масштабирование.
Zoom Out не работает в Мой код ниже:Увеличение и уменьшение масштаба изображения с помощью Objective-C?

AVCaptureDevice *device =[AVCaptureDevice defaultDeviceWithMediaType: 
                 AVMediaTypeVideo]; 
AVCaptureDeviceFormat *format = device.activeFormat; 
CGFloat maxZoomFactor = format.videoMaxZoomFactor; 
const CGFloat pinchVelocityDividerFactor = 2.0f; 

if (pinchRecognizer.state == UIGestureRecognizerStateChanged || pinchRecognizer.state ==UIGestureRecognizerStateBegan) 
{ 
    NSError *error = nil; 
     if ([device lockForConfiguration:&error]) 
     { 
     CGFloat desiredZoomFactor = device.videoZoomFactor + 
      atan2f(pinchRecognizer.velocity, pinchVelocityDividerFactor); 

      // Check if desiredZoomFactor fits required range from 1.0 
            //to activeFormat.videoMaxZoomFactor 
      if((1.0 <= pinchRecognizer.scale) && (2.5 >= pinchRecognizer.scale)) 
      device.videoZoomFactor = pinchRecognizer.scale * pinchRecognizer.scale; 

     [device unlockForConfiguration]; 
     } 
     else 
     { 
     NSLog(@"error: %@", error); 
     } 
} 
} 

Пожалуйста, помогите кто-нибудь.
Благодаря

метод
+0

посмотреть на http://stackoverflow.com/questions/23245127/uipinchgesturerecognizer-make-zoom-in-location-of-fingers-not -only-center – fabersky

+0

Но в том, что они дали для Image или View i Want, используя устройство VideoZoom Factor – kishor

+0

@kishor, где вы добавили pinchgesture? Я должен реализовать масштабирование, но не знаю, где я должен добавить жест щепотки? – Dalvik

ответ

2

// PinchGesture распознаватель определяют

- (void)handlePinchZoom:(UIPinchGestureRecognizer *)pinchRecognizer 
{ 
    AVCaptureDevice *device =[AVCaptureDevicedefaultDeviceWithMediaType: 
                 AVMediaTypeVideo]; 
    AVCaptureDeviceFormat *format = device.activeFormat; 
    CGFloat maxZoomFactor = format.videoMaxZoomFactor; 
    NSArray *formats = device.formats; 
    const CGFloat pinchVelocityDividerFactor = 2.0f; 
    if (pinchRecognizer.state == UIGestureRecognizerStateChanged || pinchRecognizer.state ==UIGestureRecognizerStateBegan) 
    { 
     NSError *error = nil; 
     if ([device lockForConfiguration:&error]) 
     { 
      CGFloat desiredZoomFactor = device.videoZoomFactor + 
      atan2f(pinchRecognizer.velocity, pinchVelocityDividerFactor); 

      device.videoZoomFactor = MAX(1.0, MIN(desiredZoomFactor, 
              device.activeFormat.videoMaxZoomFactor)); 
      [device unlockForConfiguration]; 
     } 
     else 
     { 
     NSLog(@"error: %@", error); 
     } 
    } 
    } 
Смежные вопросы