IOS中的棕褐色效果

时间:2019-04-19 02:40:38

标签: android ios swift image-processing

我正在用Android开发一个应用程序,该应用程序必须在上传的图像上应用棕褐色效果。应用程序已经存在。我在使用Sepia效果的快速代码中遇到了一个函数。

func applySepia() -> UIImage?  {
        filterValue = 1
        let image = self.processPixels(filterValue: filterValue)

        guard let cgimg = image?.cgImage else {
            print("imageView doesn't have an image!")
            return self
        }

        let value = -filterValue

        print("sliderValue = \(filterValue)")
        print("value = \(value)")

        let openGLContext = EAGLContext(api: .openGLES2)
        let context = CIContext(eaglContext: openGLContext!)

        let coreImage = CIImage(cgImage: cgimg)

        let filter = CIFilter(name: "CISepiaTone")
        filter?.setValue(coreImage, forKey: kCIInputImageKey)
        filter?.setValue(value, forKey: kCIInputIntensityKey)

        if let output = filter?.value(forKey: kCIOutputImageKey) as? CIImage {
            let cgimgresult = context.createCGImage(output, from: output.extent)
            let image = UIImage(cgImage: cgimgresult!)
            return image.applySharpness(filterValue:filterValue)
        }

        return self
    }

以上功能使用“ CISepiaTone”过滤器实现棕褐色调。在这里,“ kCIInputIntensityKey”以-1的形式传递,我无法理解。根据文档,它的值在0到1之间,但是它如何允许为负值。由于具有此强度值,因此生成的图像确实如下所示:

enter image description here

我认为,应用棕褐色后,它应如下所示: enter image description here

我可以使用https://github.com/StevenRudenko/ColorMartix/blob/master/src/com/sample/colormatrix/Main.java在android中实现第二张图像(实际上是棕褐色调)

但是,我在android中找不到任何可用于以负强度实现棕褐色调的内置方法或类,就像它在IOS Swift中的应用方式一样。这是我的问题:

  1. 尽管IOS如何为kCIInputIntensityKey允许负值,但 它应该在0-1之间的事实。
  2. 强度强度值为负值后,生成的图像看起来像 棕褐色调。
  3. 如何在Android中达到相同的效果?

0 个答案:

没有答案