Swift中用CIFilter合并多CIImage及filterWithName对应API咨询
在Swift中用CIFilter合并两张CIImage的方案
关于教程语言与API对应
你猜测的没错,那篇教程确实是用Objective-C写的。Swift里对应Objective-C的filterWithName:的API是**CIFilter(name:)**初始化方法,直接传入滤镜名称即可创建滤镜实例。
合并两张CIImage的具体实现
要合并两张CIImage,最常用的是CISourceOverCompositing滤镜(对应常规的“上层覆盖下层”混合逻辑),示例代码如下:
// 假设你已获取底层视频帧的CIImage:baseImage,上层图片的CIImage:overlayImage guard let compositeFilter = CIFilter(name: "CISourceOverCompositing") else { // 滤镜创建失败的处理逻辑 return } // 设置滤镜参数:inputBackgroundImage为底层图,inputImage为上层图 compositeFilter.setValue(baseImage, forKey: kCIInputBackgroundImageKey) compositeFilter.setValue(overlayImage, forKey: kCIInputImageKey) // 获取合成后的CIImage guard let outputImage = compositeFilter.outputImage else { // 合成失败的处理逻辑 return }
如果需要其他混合效果,可以替换对应的滤镜名称,比如CISourceInCompositing、CISourceOutCompositing等,具体可查阅Core Image官方滤镜列表。
内容的提问来源于stack exchange,提问作者Yuuu
相关产品推荐
相关产品推荐

