gpt4 book ai didi

ios - 如何反转 UIView 特定区域的颜色?

转载 作者:IT王子 更新时间:2023-10-29 05:16:02 27 4
gpt4 key购买 nike

模糊 View 的一部分很容易,请记住,如果 View 背后的内容发生变化,模糊也会实时变化。

我的问题

  1. 如何制作反色效果,放在view上面,后面的内容会反色

  2. 如何添加一个可以知道后面像素的平均颜色的效果?

一般来说,如何访问像素并操作它们?我的问题不是关于 UIImageView,而是关于 UIView 的一般问题。

有些库可以做类似的事情,但它们太慢了,而且运行起来不如 blur 流畅!

谢谢。

最佳答案

如果您知道如何编写 CIColorKernel,您将拥有所需的一切。

  • Core Image 有几个模糊滤镜,所有滤镜都使用 GPU,这将为您提供所需的性能。

  • CIAreaAverage 将为您提供指定矩形区域的平均颜色。

Core Image Filters

这是您可以编写的最简单的 CIColorKernel。它交换图像中每个像素的红色和绿色值(注意“grba”而不是“rgba”):

kernel vec4 swapRedAndGreenAmount(__sample s) {
return s.grba;
}

要将其放入 CIColorKernel,只需使用这行代码:

let swapKernel = CIKernel(string:
"kernel vec4 swapRedAndGreenAmount(__sample s) {" +
"return s.grba;" +
"}"

@tww003 有很好的代码可以将 View 的层转换为 UIImage。假设您将图像命名为 myUiImage,以执行此 swapKernel,您可以:

let myInputCi = CIImage(image: myUiImage)
let myOutputCi = swapKernel.apply(withExtent: myInputCi, arguments: myInputCi)
Let myNewImage = UIImage(ciImage: myOutputCi)

就是这样。您可以做更多的事情(包括使用 CoreGraphics 等),但这是一个好的开始。

最后一点,您可以链接各个过滤器(包括手写颜色、扭曲和一般内核)。如果需要,您可以将颜色平均值链接到带有模糊的基础 View 上,并作为单个滤镜/效果进行任何类型的反转。

关于ios - 如何反转 UIView 特定区域的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40761589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com