Harbeth 1.2.0

Harbeth 1.2.0

77维护。



Harbeth 1.2.0

  • 作者:: 
  • Condy

Harbeth

动画 静态

Carthage compatible CocoaPods Compatible CocoaPods Compatible Platform

Harbeth 是一套小巧的实用工具和扩展,用于 Apple 的 Metal 框架,旨在使您的 Swift GPU 代码更加清晰,并让您能够更快地原型化您的流水线。


英文 | 简体中文

特性

🟣目前,最重要的特征可以总结如下

  • 支持更多平台系统,包括 macOS 和 iOS。
  • 高性能,快速添加以下源头的过滤器
    • UIImage, NSImage, CIImage, CGImage, CMSampleBuffer, CVPixelBuffer。
  • 内置的过滤器大致分为以下模块
  • 自定义过滤器,并使用操作符链添加过滤器。
  • 设置MetalPerformanceShaders过滤器,且可兼容 CoreImage 过滤器。
  • 来自摄象头捕获和视频添加特殊效果。
  • 视频源处理视频文件。

目前有超过 100 种内置过滤器可供使用。✌️

要求

iOS 目标 macOS 目标 Xcode 版本 Swift 版本
iOS 10.0+ macOS 10.13+ Xcode 10.0+ Swift 5.0+

用法

  • 🚗原始代码。
lazy var ImageView: UIImageView = {
    let imageView = UIImageView(image: originImage)
    imageView.layer.borderColor = R.color("background2")?.cgColor
    imageView.layer.borderWidth = 0.5
    return imageView
}()

ImageView.image = originImage
  • 🎷零侵入式添加过滤功能。
let filter1 = C7ColorMatrix4x4(matrix: Matrix4x4.Color.sepia)
let filter2 = C7Granularity(grain: 0.8)
let filter3 = C7SoulOut(soul: 0.7)

let filters = [filter1, filter2, filter3]

// Use:
let dest = BoxxIO.init(element: originImage, filters: filters)
// Synchronize do something..
ImageView.image = try? dest.output()

// Asynchronous do something..
dest.transmitOutput(success: { [weak self] image in
    DispatchQueue.main.async {
        self?.ImageView.image = image
    }
})

// OR Use:
ImageView.image = try? originImage.makeGroup(filters: filters)

// OR Use Operator:
ImageView.image = originImage ->> filter1 ->> filter2 ->> filter3

相机

  • 📸相机捕获生成图片。
// Add an edge detection filter:
let filter = C7EdgeGlow(lineColor: .red)

// Generate camera collector:
let camera = C7CollectorCamera.init(delegate: self)
camera.captureSession.sessionPreset = AVCaptureSession.Preset.hd1280x720
camera.filters = [filter]

extension CameraViewController: C7CollectorImageDelegate {
    func preview(_ collector: C7Collector, fliter image: C7Image) {
        // do something..
    }
}

视频

  • 📺本地视频或网络视频只需应用过滤器即可。
    • 🙄详情请见 PlayerViewController
    • 您还可以通过使用 BoxxIO 扩展此功能,以过滤收集到的 CVPixelBuffer
lazy var video: C7CollectorVideo = {
    let videoURL = URL.init(string: "Link")!
    let asset = AVURLAsset.init(url: videoURL)
    let playerItem = AVPlayerItem.init(asset: asset)
    let player = AVPlayer.init(playerItem: playerItem)
    let video = C7CollectorVideo.init(player: player, delegate: self)
    let filter = C7ColorMatrix4x4(matrix: Matrix4x4.Color.sepia)
    video.filters = [filter]
    return video
}()

self.video.play()

extension PlayerViewController: C7CollectorImageDelegate {
    func preview(_ collector: C7Collector, fliter image: C7Image) {
        // do something..
    }
}

CocoaPods

  • 如要导入 Metal 模块,请在您的 Podfile 中添加以下内容:
pod 'Harbeth'
  • 如要导入 OpenCV 图像模块,请在您的 Podfile 中添加以下内容:
pod 'OpencvQueen'

Swift Package Manager

Swift Package Manager 是一个用于管理 Swift 代码分布的工具。它集成了 Swift 构建系统,以自动化下载、编译和链接依赖项的过程。

构建 Harbeth 需要 Xcode 11+,使用 Swift Package Manager.

使用 Swift Package Manager 将 Harbeth 集成到您的 Xcode 项目中,请将 Harbeth 添加到您的 Package.swift 文件中的依赖值。

dependencies: [
    .package(url: "https://github.com/yangKJ/Harbeth.git", branch: "master"),
]

备注

一般过程大致如此,Demo 也写得非常详细,您可以自行查看。🎷

HarbethDemo

提示:如果您觉得有帮助,请帮我点个赞。如果您有任何问题或需要帮助,也可以提出。

谢谢。🎇

关于作者

在GitHub上为我点一杯咖啡或支持我: GitHub.

yellow-button

许可协议

Harbeth采用MIT许可协议。更多信息请参阅LICENSE文件。