【问题标题】:how can you apply a filter on a UIImage as if it is sprayed on a brick wall?如何在 UIImage 上应用过滤器,就好像它被喷在砖墙上一样?
【发布时间】:2016-02-29 22:41:44
【问题描述】:

我想将图像与背景图像混合。 就像是喷在墙上一样。 我怎样才能获得逼真的混合。

我尝试过 alpha,但效果不佳。

我对 CoreImage 的东西很陌生。 请帮忙。

类似的东西。 http://designshack.net/wp-content/uploads/texturetricks-14.jpg

我用谷歌搜索了一些,但没有运气。 我什至不知道我在寻找什么。 不知道怎么用谷歌搜索。

【问题讨论】:

    标签: ios objective-c uiimage core-image cifilter


    【解决方案1】:

    这里是如何将两个图像混合在一起。

    UIImage *bottomImage = [UIImage imageNamed:@"bottom.png"];
    UIImage *image = [UIImage imageNamed:@"top.png"];
    
    CGSize newSize = CGSizeMake(width, height);
    UIGraphicsBeginImageContext( newSize );
    
    // Use existing opacity as is
    [bottomImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    // Apply supplied opacity
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:0.8];
    
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    

    【讨论】:

      【解决方案2】:

      这种作品。我找到了一个smiley face image——黑底白字——还有一个brick background

      第一项工作是创建该对的CIImage 版本。我将笑脸通过CIMaskToAlpha 过滤器使黑色透明:

      let brick = CIImage(image: UIImage(named: "brick.jpg")!)!
      
      let smiley = CIImage(image: UIImage(named: "smiley.jpg")!)!
          .imageByApplyingFilter("CIMaskToAlpha", withInputParameters: nil)
      

      然后将这对与CISubtractBlendMode 组合在一起:

      let composite = brick
          .imageByApplyingFilter("CISubtractBlendMode",
              withInputParameters: [kCIInputBackgroundImageKey: smiley])
      

      最后的结果就差不多了:

      减法混合仅适用于白色艺术品。

      这是另一种方法:使用CISoftLightBlendMode 进行混合,提高伽玛以使效果变亮,然后使用笑脸作为蒙版将其合成到原始砖块上:

      let composite = smiley
          .imageByApplyingFilter("CISoftLightBlendMode",
              withInputParameters: [kCIInputBackgroundImageKey: brick])
          .imageByApplyingFilter("CIGammaAdjust",
              withInputParameters: ["inputPower": 0.5])
          .imageByApplyingFilter("CIBlendWithMask",
              withInputParameters: [kCIInputBackgroundImageKey: brick, kCIInputMaskImageKey: smiley])
      

      这给出了:

      这种方法很好,因为您可以使用伽马功率控制油漆白度。

      西蒙

      【讨论】:

      • 它们只适用于白色吗?我们可以为彩色笑脸做什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多