MetalImageFramework 0.0.3

MetalImageFramework 0.0.3

MetalImageFramework 维护。



  • 作者
  • Denys Hostylo

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)