2014-06-07 4 views
0

CIFilter를 사용하여 이미지에 다양한 효과 (밝기, 대비, 채도 등)를 적용하려고합니다.iOS : 이미지 필터 CIFilter 상태가 유지되지 않습니다.

이미지 필터가 성공적으로 적용되었습니다. 그러나 편집 된 이미지의 마지막 상태가 유지되지 않습니다. 예 : 이미지의 밝기를 높이고 편집 한 이미지에 대비를 적용하면 밝기 증가 이미지에 적용되는 대신 원래 이미지에 대비가 적용됩니다.

내가 잘못 가고

- (IBAction)contrastSliderValueChanged:(id)sender { 

     filter=NULL; 
     result=NULL; 
     cgimg=NULL; 
     newimg=NULL; 



     if (adjustMenuTag==1) { 

      filter=[CIFilter filterWithName:@"CIColorControls"]; 
      [filter setDefaults]; 
      [filter setValue:beginImage forKey:@"inputImage"]; 
      [filter setValue:[NSNumber numberWithFloat:contrastSlider.value] forKey:@"inputBrightness"] ; 
      result=[filter valueForKey:kCIOutputImageKey]; 

      cgimg=[context createCGImage:result fromRect:[result extent]]; 
      newimg=[UIImage imageWithCGImage:cgimg]; 


      imageViewDisplay.image=newimg; 
      beginImage = result; 
      CFRelease(cgimg); 
    //  beginImage = [[CIImage alloc] initWithImage:imageViewDisplay.image]; 


     } else if(adjustMenuTag ==2) { 

      filter=[CIFilter filterWithName:@"CIColorControls"]; 
      [filter setDefaults]; 
      [filter setValue:beginImage forKey:@"inputImage"]; 
      [filter setValue:[NSNumber numberWithFloat:contrastSlider.value+0.5] forKey:@"inputContrast"] ; 
      result=[filter valueForKey:kCIOutputImageKey]; 
      cgimg=[context createCGImage:result fromRect:[result extent]]; 
      newimg=[UIImage imageWithCGImage:cgimg]; 
      imageViewDisplay.image=newimg; 
      beginImage = result; 
      CFRelease(cgimg); 
    //  beginImage = newimg.CIImage; //this also doesn't work. 
     } 
} 

:

다음은 코드? 어떻게 해결할 수 있습니까? 편집 한 이미지의 상태를 어떻게 유지합니까?

답변

0

코드를 보면 메뉴 항목을 선택할 때마다 CIColorControls 필터의 새 인스턴스를 만드는 것처럼 보입니다. 하나를 만들고 필요에 따라 입력을 업데이트해야합니다.