【问题标题】:How do I use filters, CGBitmapContextCreate and CGBitmapInfo with UIImage?如何在 UIImage 中使用过滤器、CGBitmapContextCreate 和 CGBitmapInfo?
【发布时间】:2015-02-04 19:34:35
【问题描述】:

我想应用 Core Image 过滤器在 iOS 8 上的 Swift 中对 UIImage 对象进行各种 CG 操作,但我在使用 CGBitmapContextCreate() 时遇到了一些困难,尤其是我想将其设置为 Swift 的 CGBitmapInfo 参数- 与 Objective C 一起使用的常量 kCGImageAlphaPremultipliedLast 的兼容等效项。

我想要一些关于如何做这些事情的工作示例。

【问题讨论】:

    标签: ios swift core-graphics core-image


    【解决方案1】:

    这是一个如何通过创建 CGItmapContext 对图像执行 CG 操作的示例...

    func setImageMaskColor(srcImage: UIImage, color: UIColor) -> UIImage {
        var bounds = CGRectMake(0, 0, srcImage.size.width, srcImage.size.height)
        var colorSpace = CGColorSpaceCreateDeviceRGB()
        let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)
        var ctx = CGBitmapContextCreate(nil,
                        CGImageGetWidth(srcImage.CGImage),
                        CGImageGetHeight(srcImage.CGImage),
                        CGImageGetBitsPerComponent(srcImage.CGImage),
                        CGImageGetBytesPerRow(srcImage.CGImage),
                        CGImageGetColorSpace(srcImage.CGImage),
                        bitmapInfo)!
        CGContextDrawImage(ctx, bounds, srcImage.CGImage)
        CGContextSetBlendMode(ctx, kCGBlendModeSourceAtop)
        CGContextSetFillColorWithColor(ctx, color.CGColor)
        CGContextFillRect(ctx, bounds);
        var resultCGimage = CGBitmapContextCreateImage(ctx)
        CGContextDrawImage(ctx, bounds, resultCGimage)
        return UIImage(CGImage: resultCGimage)!
    }
    

    【讨论】:

      【解决方案2】:

      这是一个如何对 UIIimage 执行 Core Image 过滤器的示例...

      func imageAdjustHue(srcImage: UIImage, hue: CGFloat) -> UIImage {
          var colorParam = [ kCIInputAngleKey : hue ]
          var ciimage = CIImage(CGImage: srcImage.CGImage)
          let filteredImage = ciimage.imageByApplyingFilter("CIHueAdjust", withInputParameters: colorParam)
          return UIImage(CIImage: filteredImage!)!
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 2011-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-05
        • 1970-01-01
        • 2016-04-01
        • 1970-01-01
        相关资源
        最近更新 更多