FlexibleImage 是希望任何人都能轻松开发具有相机滤镜和主题等功能的 App。当你以“方法链”风格编写代码时,效果会按照适当的顺序应用。
如果您想先查看实际代码,请先查看 示例 部分。
💡 用法
代码
import UIKit
import FlexibleImage
/// Generate Example
let image1 = UIImage
.circle(
color: UIColor.blue,
size: CGSize(width: 100, height: 100)
)!
.adjust()
.offset(CGPoint(x: 25, y: 0))
.margin(UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5))
.padding(UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15))
.normal(color: UIColor.white)
.border(color: UIColor.red, lineWidth: 5, radius: 50)
.image()!
.adjust()
.background(color: UIColor.darkGray)
.image()
/// Effect Example
let image2 = UIImage(named: "macaron.jpg")!
.adjust()
.outputSize(CGSize(width: 250, height: 250))
.exclusion(color: UIColor(red: 0, green: 0, blue: 0.352941176, alpha: 1.0))
.linearDodge(color: UIColor(red: 0.125490196, green: 0.058823529, blue: 0.192156863, alpha: 1.0))
.hardMix(color: UIColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1.0))
.image()
/// Mix Example
let image3 = image2!.adjust()
.append(
image1!.adjust()
.outputSize(CGSize(width: 250, height: 250))
.alpha(0.5)
)
.image()
/// Clipping Example
let image4 = image3!.adjust()
.corner(CornerType(25))
.image()
/// Pipeline
let pipeline = ImagePipeline()
.exclusion(color: UIColor(red: 0, green: 0, blue: 0.352941176, alpha: 1.0))
.linearDodge(color: UIColor(red: 0.125490196, green: 0.058823529, blue: 0.192156863, alpha: 1.0))
let image5 = pipeline.image(image2)
let image6 = pipeline.image(image1)演练场
使用 CocoaPods 命令 $ pod try FlexibleImage 尝试演练场!
🏗 安装
CocoaPods (适用于 iOS 8+ 项目)
KWDrawerController 可在 CocoaPods (https://github.com/cocoapods/cocoapods) 上找到。将以下内容添加到您的 Podfile 中
/// Swift 3
pod 'FlexibleImage', '~> 1.7'
/// Swift 4
pod 'FlexibleImage', '~> 1.9'Carthage (适用于iOS 8及以上版本的项目)
github "kawoou/FlexibleImage" ~> 1.9
手动
您可以将 Source 文件夹简单地拖放到您现有的项目中。
📕 支持的功能
通用
| 类型 | 参数 | 注释 |
|---|---|---|
| background() | 颜色 | 背景颜色。 |
| opacity() | 浮点数 | 更改图像的透明度。 |
| alphaProcess() | 布尔值 | 是否在图像处理过程中包括alpha值。 |
| (已弃用) |
||
| offset() | CGPoint | 要绘制的图像位置。 |
| rotate() | radius: CGFloat fixedSize: CGSize [可选] |
旋转图像。 |
| size() | CGSize | 要绘制的图像的大小。 |
| outputSize() | CGSize | 输出图像的大小。 |
| scaling() | CGSize | 缩放图像(比例) |
| margin() | EdgeInsets | 边距大小 |
| padding() | EdgeInsets | 填充大小 |
| corner() | CornerType | 剪裁角落的圆角半径。 |
| border() | color: Color lineWidth: CGFloat radius: CGFloat |
绘制边界。 |
| image() | 运行管道以创建输出图像。 |
过滤器
| 类型 | 参数 | 注释 |
|---|---|---|
| greyscale() | threshold: Float [可选] | |
| monochrome() | threshold: Float [可选] | |
| invert() | ||
| sepia() | ||
| vibrance() | vibrance: Float [可选] | |
| solarize() | threshold: Float [可选] | |
| posterize() | colorLevel: Float [可选] | |
| blur() | blurRadius: Float [可选] | 不支持watchOS。 |
| brightness() | brightness: Float [可选] | |
| chromaKey() | color: FIColor threshold: Float [可选] smoothing: Float [可选] |
|
| swizzling() | ||
| contrast() | threshold: Float [可选] | |
| gamma() | gamma: Float [可选] |
混合
| 类型 | 参数 |
|---|---|
| normal() | 颜色 |
| multiply() | 颜色 |
| lighten() | 颜色 |
| darken() | 颜色 |
| average() | 颜色 |
| add() | 颜色 |
| subtract() | 颜色 |
| difference() | 颜色 |
| negative() | 颜色 |
| screen() | 颜色 |
| exclusion() | 颜色 |
| overlay() | 颜色 |
| softLight() | 颜色 |
| hardLight() | 颜色 |
| colorDodge() | 颜色 |
| colorBurn() | 颜色 |
| linearDodge() | 颜色 |
| linearBurn() | 颜色 |
| linearLight() | 颜色 |
| vividLight() | 颜色 |
| pinLight() | 颜色 |
| hardMix() | 颜色 |
| reflect() | 颜色 |
| glow() | 颜色 |
| phoenix() | 颜色 |
| hue() | 颜色 |
| saturation() | 颜色 |
| color() | 颜色 |
| luminosity() | 颜色 |
后处理
| 类型 | 参数 | 注释 |
|---|---|---|
| algorithm() | AlgorithmType | 通过在像素级别直接写入公式创建图像。 |
| custom() | ContextType | 使用Core Graphics直接添加处理。 |
生成
| 类型 | 注释 |
|---|---|
| rect() | 创建矩形图像。 |
| circle() | 创建圆形图像。 |
| append() | 将图像组合成一个单一的图像。 |
管道(ImagePipeline类)
| 类型 | 参数 | 返回 | 注释 |
|---|---|---|---|
| image() | FIImage | FIImage? | 创建输出图像。 |
| image() | CGImage | CGImage? | 创建输出图像。 |
| image() | CVImageBuffer | CGImage? | 创建输出图像。 |
🎁 示例
🏷 变更日志
- 1.0
- 首次发布。
- 1.1
- 添加到裁剪角半径。
- 1.2
- 支持 tvOS 和 macOS。
- 1.3
- 支持 watchOS。
- 添加了灰度、深棕、活力、日晒、海报化过滤器。
- 更新重置方法。
- 1.4
- 添加模糊过滤器。
- 优化构建时间。
- 设置 TravisCI。
- 支持 carthage。
- 1.5
- 根据情况支持 Metal。
- 添加亮度、色度、交换、对比度、伽玛过滤器。
- 1.6(热修复!)
- 修复 Cocoapods 中 Metal 库路径问题。
- 1.7
- 流处理的管道实现。
- 修复由于图像方向导致的渲染错误(感谢 Kwonyoon Kang)
- 1.8
- 支持 Swift 4 和 Xcode 9
- 1.9
- 支持 Swift 4.1 和 Xcode 9.3
- 1.10
- 支持 Swift 4.2 和 Xcode 10
💻 要求
- iOS 8.0+
- tvOS 9.0+
- macOS 10.10+
- watchOS 2.0+
- Swift 3.0+
🔑 许可证
FlexibleImage 使用 MIT 许可。有关更多信息,请参阅 LICENSE 文件。

