2016-05-11 3 views
0

私はGPUImageでカメラでズーム機能を行っています。しかし、私はズームでカメラから画像をキャプチャし、それを保存するが、それは通常のpict(ズームが見つかりません)として保存します。どちらのモードでもアルバムに保存しなければならない画像をキャプチャしたい。どのように私はこの問題を解決することができます任意の提案は素晴らしいでしょう。みんなありがとう。私のコード:コードの下Objevtive - C:GPUImageを使用してズームしたcaputre画像をカメラから保存しますか?

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.library = [[ALAssetsLibrary alloc] init]; 
    [self setViewLayOut]; 
    [self setupFilter]; 
    [self setZoomFunctionlityOnCamera]; 

} 


- (void)setupFilter; 
{ 
    videoCamera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack]; 
    videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; 
    switch (filterType) 
    { 
     case GPUIMAGE_COLORINVERT: 
     { 
      self.title = @"Color Negative"; 
      filter = [[GPUImageColorInvertFilter alloc] init]; 
     }; 
     break; 
     case GPUIMAGE_GRAYSCALE: 
     { 
      self.title = @"Black and White Positive"; 
      filter = [[GPUImageGrayscaleFilter alloc] init]; 
     }; 
     break; 

     default: filter = [[GPUImageFilter alloc] init]; 
     self.title = @"Color Positive"; 
     break; 
    } 
    videoCamera.runBenchmark = YES; 
    filterView = (GPUImageView *)cameraView; 
    [filter addTarget:filterView]; 
    [videoCamera addTarget:filter]; 
    [videoCamera startCameraCapture]; 
} 



    - (IBAction)clickPhotoBtn:(id)sender { 
    if (!isCameraPermissionAccessed) { 
     [self showAccessDeinedMessage :@"Camera permission denied" withMessage:@"To enable, please go to settings and allow camera permission for this app."]; 
     return; 
    } 
    [videoCamera capturePhotoAsJPEGProcessedUpToFilter:filter withCompletionHandler:^(NSData *processedJPEG, NSError *error){ 
     if (error!=nil) 
     { 
      [self showErrorMessage:@"Unable to capture image" ]; 
      return ; 
     } 

     else { 
      UIImage *image = [UIImage imageWithData:processedJPEG]; 
      if (filterType == GPUIMAGE_GRAYSCALE) { 
      GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:image]; 
      GPUImageColorInvertFilter *stillImageFilter = [[GPUImageColorInvertFilter alloc] init]; 
      [stillImageSource addTarget:stillImageFilter]; 
      [stillImageFilter useNextFrameForImageCapture]; 
      [stillImageSource processImage]; 
      UIImage *currentFilteredVideoFrame = [stillImageFilter imageFromCurrentFramebuffer]; 
      UIImageWriteToSavedPhotosAlbum(currentFilteredVideoFrame, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 

      } 
     else{ 
      UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 
      } 
     } 

    }]; 
    } 

答えて

1

使用して、それは参考になりまし

+(UIImage*)croppedImageWithImage:(UIImage *)image zoom:(CGFloat)zoom 
{ 
    CGFloat zoomReciprocal = 1.0f/zoom; 

    CGPoint offset = CGPointMake(image.size.width * ((1.0f - zoomReciprocal)/2.0f), image.size.height * ((1.0f - zoomReciprocal)/2.0f)); 
    CGRect croppedRect = CGRectMake(offset.x, offset.y, image.size.width * zoomReciprocal, image.size.height * zoomReciprocal); 

    CGImageRef croppedImageRef = CGImageCreateWithImageInRect([image CGImage], croppedRect); 

    UIImage* croppedImage = [[UIImage alloc] initWithCGImage:croppedImageRef scale:[image scale] orientation:[image imageOrientation]]; 

    CGImageRelease(croppedImageRef); 

    return croppedImage; 
} 
+0

はPSS @、おかげで、私はあなたのコードの助けを借りて私の問題を解決している可能性があります。あなたは私のヒーローです...今日のために! –

+0

ようこそ、あなたが本当に私のansがあなたを助けてくれると感じたら、このansを最高のものとして受け入れてください。 – PSS

+0

ありがとうございました – PSS

関連する問題