ios学习--camera zoom with slider

来源:互联网 发布:综艺频道山东网络台 编辑:程序博客网 时间:2024/06/04 20:10

设置preview zoom的方式:

// create a uiview subclass for showing the camera feed 
 
UIView *previewView= [[UIView alloc] initWithFrame:CGRectMake(0,0, 320, 430)]; 
 
[[self view] addSubview:previewView]; 
 
 
CGRect layerRect =CGRectMake(0,0, 320, 430); 
 
[[self avCaptureVideoPreviewLayer] setBounds:layerRect]; 
 
 
[[self  previewLayer] setPosition:CGPointMake(CGRectGetMidX(layerRect),CGRectGetMidY(layerRect))]; 
 
 
// add the video previewview layer to the preview view 
 
[[previewView layer] addSublayer:[self avCaptureVideoPreviewLayer]]; 

// zoom the preview view using core graphics 
 
[previewView setTransform:CGAffineTransformMakeScale(2.0,2.0 )]; 

设置preview zoom的方式:

- (void)handlePinchGesture:(UIPinchGestureRecognizer*)gestureRecognizer { 
 
   
if([gestureRecognizer state]== UIGestureRecognizerStateBegan){ 
       
// Reset the last scale, necessary if there are multiple objects with different scales 
        lastScale
= [gestureRecognizer scale]; 
   
} 
 
   
if ([gestureRecognizer state]== UIGestureRecognizerStateBegan||  
       
[gestureRecognizer state]== UIGestureRecognizerStateChanged){ 
 
       
CGFloat currentScale = [[[gestureRecognizer view].layer valueForKeyPath:@"transform.scale"] floatValue]; 
 
       
// Constants to adjust the max/min values of zoom 
       
const CGFloat kMaxScale= 2.0; 
       
const CGFloat kMinScale= 1.0; 
 
       
CGFloat newScale = 1-  (lastScale- [gestureRecognizer scale]);  
        newScale
= MIN(newScale, kMaxScale/ currentScale);    
        newScale
= MAX(newScale, kMinScale/ currentScale); 
       
CGAffineTransform transform= CGAffineTransformScale([[gestureRecognizer view] transform], newScale, newScale); 
       
[gestureRecognizer view].transform= transform; 
 
        lastScale
= [gestureRecognizer scale];  // Store the previous scale factor for the next pinch gesture call   
   
} 
} 

 

图片后处理:

 if(cameraZoom >1.0)  
 
{ 
       
// save the images original size 
       
CGSize orgSize =[image size];   
 
       
// resize the image to the zoom scale   
        image
= [image resizedImage:CGSizeMake(image.size.width* cameraZoom, image.size.height*cameraZoom) interpolationQuality:kCGInterpolationNone];            
 
       
// now calculate the offset x and offset y 
       
CGFloat offsetX = ( image.size.width/ 2) -(orgSize.width/2); 
       
CGFloat offsetY =  ( image.size.height/ 2) -(orgSize.height/2); 
 
         
// crop the image from the offset position to the original width and height 
         image
= [image croppedImage:CGRectMake(offsetX, offsetY, orgSize.width, orgSize.height)]; 
   
} 
 
 
   
UIButton *imgBtn= (UIButton*)[self.view viewWithTag:500]; 
   
[imgBtn setImage:image forState:UIControlStateNormal]; 

}

原创粉丝点击