2013-01-23 16 views
5

Tôi muốn tạo chuỗi bộ lọc CoreImage và có thể kiểm soát "cường độ" của từng bộ lọc trong chuỗi bằng cách tổng hợp hiệu ứng riêng lẻ với cài đặt alpha hoặc độ mờ nhưng tôi không thấy cách để tổng hợp với alpha hoặc độ mờ trong tài liệu.Xcode: kết hợp với alpha bằng hình ảnh lõi

Tôi có thể thoát khỏi chuỗi bộ lọc hình ảnh lõi và kết hợp với ngữ cảnh đồ họa cốt lõi mà tôi đoán.

Trả lời

-1

Đã kết thúc thực hiện việc này như thế này. Mã từ câu trả lời này: 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

Bộ lọc CIColorMatrix có thể được sử dụng để làm thay đổi thành phần alpha của một CIImage, mà bạn có thể sau đó tổng hợp vào một hình nền:

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];