MetalImageFramework
一个允许您将 Metal 滤镜应用于图像的框架
安装
SPM
在 Xcode 中单击 添加包依赖...
,并将此仓库的链接(https://github.com/greedy-dev/MetalImageFramework.git
)粘贴进去
或者
将以下内容添加到您的 Package.swift
dependencies: [
.package(url: "https://github.com/greedy-dev/MetalImageFramework.git", from: "0.0.2")
]
CocoaPods
在您的 Podfile
中添加以下行
pod 'MetalImageFramework', '0.0.2'
使用方法
创建视图并添加图片
使用 MetalImageView
显示图片,ImageInput
处理图片,BasicShaderOperation
应用图片滤镜
示例代码
let image = UIImage(named: "test_image")!
input = ImageInput(image: image)
input => imageView
input.processImage()
应用滤镜
使用 input => filter => imageView
,然后调用 input.processImage()
显示应用滤镜后的图片。若要清除滤镜,使用 imageView.sources.removeAtIndex(0)
示例代码
func applyFilter(_ filter: BasicShaderOperation) {
imageView.sources.removeAtIndex(0)
input => filter => imageView
self.input.processImage()
}
链式连接多个过滤器
您可以使用OperationGroup
来链式连接过滤器
示例代码
let luminance = LuminanceAdjustment()
let contrast = ContrastAdjustment()
contrast.contrast = 2.0
let group = OperationGroup()
group.configureGroup{ input, output in
input => self.boxBlur => self.contrast => output
}
编写自定义过滤器
要编写自定义过滤器,您可以继承BasicShaderOperation
(或直接实例化它)。您需要提供片段着色器和输入数量给它。简单单一输入过滤器的代码看起来可能是这样的
let customFilter = BasicOperation(fragmentFunctionName: "customFragmentShader", numberOfInputs: 1)