2012-10-16 19 views
9

मैं आईओएस 6 पर कोरइमेज का उपयोग करके एक छवि को धुंधला करने की कोशिश कर रहा हूं, बिना किसी काले रंग की सीमा के। Apple documentation बताता है कि एक CIAffineClamp फ़िल्टर का उपयोग करके यह प्राप्त हो सकता है लेकिन मैं फ़िल्टर से आउटपुट छवि प्राप्त करने में सक्षम नहीं हूं। यहां मैंने जो कोशिश की है, लेकिन दुर्भाग्य से जब मैं [clampFilter outputImage] तक पहुंचता हूं तो एक खाली छवि बनाई जाती है। अगर मैं केवल धुंध निष्पादित करता हूं तो एक छवि उत्पन्न होती है, लेकिन अंधेरे इन्सेट सीमा के साथ।आईओएस 6 पर CIGAussianBlur और CIAffineClamp 6

CIImage *inputImage = [[CIImage alloc] initWithCGImage:self.CGImage]; 

CIContext *context = [CIContext contextWithOptions:nil]; 

CGAffineTransform transform = CGAffineTransformIdentity; 

CIFilter *clampFilter = [CIFilter filterWithName:@"CIAffineClamp"]; 
[clampFilter setValue:inputImage forKey:kCIInputImageKey]; 
[clampFilter setValue:[NSValue valueWithBytes:&transform objCType:@encode(CGAffineTransform)] forKey:@"inputTransform"]; 

CIImage *outputImage = [clampFilter outputImage]; 

CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur" 
    keysAndValues:kCIInputImageKey, outputImage, @"inputRadius", [NSNumber numberWithFloat:radius], nil]; 

outputImage = [blurFilter outputImage]; 

CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; 
UIImage *blurredImage = [UIImage imageWithCGImage:cgimg]; 
CGImageRelease(cgimg); 

उत्तर

14

CIAffineClamp फिल्टर के रूप में अनंत अपनी हद है, जो तब आपके संदर्भ घालमेल कर दिया है स्थापित कर रही है। पूर्व-क्लैंप सीमा CGRect को सहेजने का प्रयास करें, और उसके बाद संदर्भ प्रारंभकर्ता को इसकी आपूर्ति करें।

+4

संदर्भ संदर्भ समस्या थी। अंत में CGImage बनाते समय इनपुट इमेज सीमा का उपयोग करने के लिए मैंने इसे वास्तव में तय किया: 'CGImageRef cgimg = [संदर्भ createCGImage: outputImage fromRect: inputImage.extent];' – bryguy1300