本案例的目的是理解如何用Metal实现图像4x4颜色矩阵效果滤镜,通过4x4矩阵对RGBA像素处理;
Demo
实操代码
// 绿色通道加倍
let filter = C7ColorMatrix4x4(matrix: Matrix4x4.Color.greenDouble)
// 方案1:
ImageView.image = try? BoxxIO(element: originImage, filters: [filter, filter2, filter3]).output()
// 方案2:
ImageView.image = originImage.filtering(filter, filter2, filter3)
// 方案3:
ImageView.image = originImage ->> filter ->> filter2 ->> filter3
效果对比图
identity: 原始 | sepia: 棕褐色 | nostalgic: 怀旧效果 |
---|---|---|
![]() |
![]() |
![]() |
retroStyle: 复古效果 | polaroid: 宝丽来彩色 | greenDouble: 绿色通道加倍 |
![]() |
![]() |
![]() |
skyblue_turns_green :天蓝色变绿色 | gray: 灰度图矩阵 | remove_green_blue: 去掉绿色和蓝色 |
![]() |
![]() |
![]() |
replaced_red_green: 红色绿色对调位置 | rgb_to_bgr: 映射RGB到BGR | decreasingOpacity: 调整透明度 |
![]() |
![]() |
![]() |
axix_red_rotate: 围绕红色旋转 | axix_green_rotate: 围绕绿色旋转 | axix_blue_rotate: 围绕蓝色旋转 |
![]() |