2013-01-23 46 views
5

मैं कोरइमेज फ़िल्टर श्रृंखला बनाना चाहता हूं, और अल्फा, या अस्पष्टता सेटिंग्स के साथ अपने व्यक्तिगत प्रभाव को कंपोजिट करके श्रृंखला में प्रत्येक फ़िल्टर की "तीव्रता" को नियंत्रित करने में सक्षम होना चाहता हूं, लेकिन मैं दस्तावेज़ों में अल्फा या अस्पष्टता के साथ मिश्रित करने का कोई तरीका नहीं देख रहा हूं।एक्सकोड: कोर छवि का उपयोग करके अल्फा के साथ कंपोजिटिंग

मैं कोर छवि फ़िल्टर श्रृंखला से बाहर निकल सकता हूं और अनुमान लगाता हूं कि कोर ग्राफिक्स संदर्भ के साथ मिश्रित है।

उत्तर

-1

इसे इस तरह से समाप्त कर दिया। इस जवाब से कोड: https://stackoverflow.com/a/3188761/1408546

UIImage *bottomImage = inputImage; 
UIImage *image = filterOutput; 
CGSize newSize = CGSizeMake(inputImage.size.width, inputImage.size.height); 
UIGraphicsBeginImageContext(newSize); 
[bottomImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:_opacity]; 
UIImage *blendedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
13

CIColorMatrix फिल्टर एक CIImage, के अल्फा घटक को बदलने के लिए इस्तेमाल किया जा सकता है जिसे आप एक पृष्ठभूमि छवि पर संयुक्त कर सकते हैं:

CIImage *overlayImage = … // from file, CGImage etc 
CIImage *backgroundImage = … // likewise 

CGFloat alpha = 0.5; 
CGFloat rgba[4] = {0.0, 0.0, 0.0, alpha}; 
CIFilter *colorMatrix = [CIFilter filterWithName:@"CIColorMatrix"]; 
[colorMatrix setDefaults]; 
[colorMatrix setValue:overlayImage forKey: kCIInputImageKey]; 
[colorMatrix setValue:[CIVector vectorWithValues:rgba count:4] forKey:@"inputAVector"]; 

CIFilter *composite = [CIFilter filterWithName:@"CISourceOverCompositing"]; 
[composite setDefaults]; 
[composite setValue:colorMatrix.outputImage forKey: kCIInputImageKey]; 
[composite setValue:backgroundImage forKey: kCIInputBackgroundImageKey]; 

UIImage *blendedImage = [UIImage imageWithCIImage:composite.outputImage];