关于
MediaWatemark 是一个开源的 GPU/CPU 基础 iOS 水印库,用于向图像或视频内容添加重叠层。它具有简洁的界面和直接的功能。
概览
简单 & 通用
MediaWatemark 容易安装并集成到任何 iOS 项目中。它可以处理广泛的任务,非常适合在视频或其他图像上叠加视图和文本。
轻量代码
MediaWatemark 由轻量级代码组成,可以轻松地在一个图像上叠加另一个图像,或者用视频内容进行同样的操作。
易于安装
在使用此库之前,您可能想要运行以下我分享的示例项目。您准备使用它时,只需遵循以下简短的安装提示。
安装
CocoaPods
MediaWatermark 可以通过 CocoaPods 使用。要安装它,只需将以下行添加到您的 Podfile
pod "MediaWatermark"
Carthage
要使用 Carthage 将 MediaWatermark 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "rubygarage/media-watermark" ~> 0.4
运行 carthage update
来构建框架,并将构建的 MediaWatermark.framework 拖到您的 Xcode 项目中。
系统要求
iOS: 9.0+
Swift: 5.0
CocoaPods:适用于 iOS
处理器概念:GPU & CPU
示例
要运行示例项目,请先克隆仓库,然后从示例目录运行 pod install。
用法
在其他图片上添加多个图片
要在不同坐标上添加两个图像并覆盖第三个图像,您可以使用以下类似代码。图像会根据您在代码中设置的坐标来放置。
if let item = MediaItem(url: url) {
let logoImage = UIImage(named: "rglogo")
let firstElement = MediaElement(image: logoImage!)
firstElement.frame = CGRect(x: 0, y: 0, width: logoImage!.size.width, height: logoImage!.size.height)
let secondElement = MediaElement(image: logoImage!)
secondElement.frame = CGRect(x: 150, y: 150, width: logoImage!.size.width, height: logoImage!.size.height)
item.add(elements: [firstElement, secondElement])
let mediaProcessor = MediaProcessor()
mediaProcessor.processElements(item: item) { [weak self] (result, error) in
// handle result
}
}
在图像上添加图像和文本
如果您需要将图像和文本渲染到另一个图像上,下一个脚本模板将有效。
let item = MediaItem(image: image)
let logoImage = UIImage(named: "logo")
let firstElement = MediaElement(image: logoImage!)
firstElement.frame = CGRect(x: 0, y: 0, width: logoImage!.size.width, height: logoImage!.size.height)
let testStr = "Test Attributed String"
let attributes = [ NSForegroundColorAttributeName: UIColor.white, NSFontAttributeName: UIFont.systemFont(ofSize: 35) ]
let attrStr = NSAttributedString(string: testStr, attributes: attributes)
let secondElement = MediaElement(text: attrStr)
secondElement.frame = CGRect(x: 300, y: 300, width: logoImage!.size.width, height: logoImage!.size.height)
item.add(elements: [firstElement, secondElement])
let mediaProcessor = MediaProcessor()
mediaProcessor.processElements(item: item) { [weak self] (result, error) in
self?.resultImageView.image = result.image
}
在视频上添加图像和文本
要在视频上添加图像和文本,请参阅以下代码示例
if let item = MediaItem(url: url) {
let logoImage = UIImage(named: "logo")
let firstElement = MediaElement(image: logoImage!)
firstElement.frame = CGRect(x: 0, y: 0, width: logoImage!.size.width, height: logoImage!.size.height)
let testStr = "Attributed Text"
let attributes = [ NSForegroundColorAttributeName: UIColor.white, NSFontAttributeName: UIFont.systemFont(ofSize: 35) ]
let attrStr = NSAttributedString(string: testStr, attributes: attributes)
let secondElement = MediaElement(text: attrStr)
secondElement.frame = CGRect(x: 300, y: 300, width: logoImage!.size.width, height: logoImage!.size.height)
item.add(elements: [firstElement, secondElement])
let mediaProcessor = MediaProcessor()
mediaProcessor.processElements(item: item) { [weak self] (result, error) in
self?.videoPlayer.url = result.processedUrl
self?.videoPlayer.playFromBeginning()
}
}
金属图像处理
MediaWatermark 为图像提供五种过滤器
- 颜色过滤器
- 棕褐色
- 模糊
- Sobel
- 阈值
在图像上添加过滤器
let item = MediaItem(image: image)
let colorFilter = ColorFilter()
colorFilter.r = 1
colorFilter.g = 1
colorFilter.b = 0
item.applyFilter(mediaFilter: colorFilter)
let logoImage = UIImage(named: "logo")
let firstElement = MediaElement(image: logoImage!)
firstElement.frame = CGRect(x: 0, y: 0, width: logoImage!.size.width, height: logoImage!.size.height)
let secondElement = MediaElement(image: logoImage!)
secondElement.frame = CGRect(x: 100, y: 100, width: logoImage!.size.width, height: logoImage!.size.height)
item.add(elements: [firstElement, secondElement])
let mediaProcessor = MediaProcessor()
mediaProcessor.processElements(item: item) { [weak self] (result, error) in
self?.resultImageView.image = result.image
}
请注意,滤镜目前只适用于图像资源。
作者
Sergey Afanasiev
寻求帮助
许可
MediaWatermark遵从MIT许可证。有关更多信息,请参阅LICENSE文件。
RubyGarage是一家领先的东欧软件开发和咨询服务公司。我们的主要专业领域包括Ruby和Ruby on Rails,但我们成功地运用其他技术为我们的客户提供最佳结果。请查看我们的作品集,了解更多令人兴奋的作品!