gpt4 book ai didi

ios - 如何在图像像素上应用 CIFilter

转载 作者:行者123 更新时间:2023-11-28 07:21:39 24 4
gpt4 key购买 nike

我知道可以使用像素缓冲区更改像素的颜色,如下面的代码所示,但我只想使用“CIFilter”模糊像素而不是更改颜色。我不想在整个图像上应用“CIFilter”。

//data pointer – stores an array of the pixel components. For example (r0, b0, g0, a0, r1, g1, b1, a1 .... rn, gn, bn, an)
let data : UnsafeMutablePointer<UInt8> = calloc(bytesPerRow, height)!.assumingMemoryBound(to: UInt8.self)

//get the index of the pixel (4 components times the x position plus the y position times the row width)
let pixelIndex = 4 * (location.x + (location.y * width))

//set the pixel components to the color components
data[pixelIndex] = red
data[pixelIndex+1] = green
data[pixelIndex+2] = blue
data[pixelIndex+3] = alpha

我们还可以使用以下代码在 Pixel 上应用 CIFilter 吗?

if let pixelData = self.cgImage?.dataProvider?.data {
let data: UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)
let pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4
let red = CGFloat(data[pixelInfo]) / CGFloat(255.0)
let green = CGFloat(data[pixelInfo+1]) / CGFloat(255.0)
let blue = CGFloat(data[pixelInfo+2]) / CGFloat(255.0)
let alpha = CGFloat(data[pixelInfo+3]) / CGFloat(255.0)
}

最佳答案

查看 CIBlendWithMask筛选。它允许您创建任何形状(甚至是单个像素)的 mask ,并使用它来将输入与另一个输入混合。如果您使 inputBackgroundImage 成为原始图像,并使 inputImage 成为应用了所需滤镜的原始图像,则 inputImageMask 是全黑的仅包含您想要更改为白色的单个像素的图像。

关于ios - 如何在图像像素上应用 CIFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57829875/

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