模糊视图的一部分很容易,请记住,如果后面的视图内容发生变化,模糊也会实时变化.
我的问题
如何制作反转效果,你可以把它放在一个视图上,后面的内容会有反转的颜色
如何添加一个能够知道背后像素平均颜色的效果?
一般来说,如何访问像素并操纵它们?我的问题不是关于UIImageView,一般询问UIView ..
有些库可以做类似的事情,但是它们非常慢而且运行不像模糊一样平滑!
谢谢.
如果您知道如何编写CIColorKernel代码,那么您将拥有所需的代码.
Core Image有几个模糊滤镜,所有这些都使用GPU,它将为您提供所需的性能.
CIAreaAverage将为您提供指定矩形区域的平均颜色.
这是关于你可以编写的最简单的CIColorKernel.它会为图像中的每个像素交换红色和绿色值(请注意"grba"而不是"rgba"):
kernel vec4 swapRedAndGreenAmount(__sample s) {
return s.grba;
}
Run Code Online (Sandbox Code Playgroud)
要将它放入CIColorKernel,只需使用以下代码行:
let swapKernel = CIKernel(string:
"kernel vec4 swapRedAndGreenAmount(__sample s) {" +
"return s.grba;" +
"}"
Run Code Online (Sandbox Code Playgroud)
@ tww003有很好的代码将视图层转换为UIImage.假设您调用图像myUiImage,要执行此swapKernel,您可以:
let myInputCi = CIImage(image: myUiImage)
let myOutputCi = swapKernel.apply(withExtent: myInputCi, arguments: myInputCi)
Let myNewImage = UIImage(ciImage: myOutputCi)
Run Code Online (Sandbox Code Playgroud)
就是这样.你可以做更多(包括使用CoreGraphics等),但这是一个好的开始.
最后一点,您可以链接各个过滤器(包括手写颜色,扭曲和一般内核).如果需要,您可以使用模糊链接基础视图上的颜色平均值,并将您希望的任何类型的反转作为单个过滤器/效果进行链接.
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |