【问题标题】:CIFilter + UIImage + alpha maskCIFilter + UIImage + alpha 蒙版
【发布时间】:2013-08-19 14:40:32
【问题描述】:

我正在使用这样的解决方案来掩盖我的 UIImage 与一些 alpha 绘图: masking an UIImage

问题是稍后我想申请一些CIFilters。但是,当我更改过滤器的值时,我的 alpha 会从 UIImage 中丢失。每次修改 CIFilter 后,我是否必须重新应用 alpha 通道来输出图像?这肯定会使这个过程变得更慢。

代码示例:(每个新段落都在另一个方法中)

// set the image
_image = [incomeImage imageWithMask:_mask]; // imageWithMask from method from link
[_myView.imageView setImage:_image];

// calculate ciimages
_inputCIImage = [[CIImage alloc] initWithCGImage:_image.CGImage options:nil];
_myView.imageView.image = _image;
_currentCIImage = _inputCIImage;

// change value in filter
[filter setValue:@(0.2f) forKey:@"someKey"];
[filter setValue:_inputCIImage forKey:kCIInputImageKey];
_currentCIImage = [filter outputImage];
CGImageRef img = [_context createCGImage:_currentCIImage fromRect:[_currentCIImage extent]];
UIImage *newImage = [UIImage imageWithCGImage:img];

【问题讨论】:

  • 技术上不应该迷路。给我们看看代码?
  • @Nikhita 添加了最重要的代码部分。
  • 您只能使用 CIFilters 来执行此操作。您可以使用CIBlendWithMask CIFilter,而不是使用 imageWithMask。
  • “您只能使用 CIFilters 执行此操作”是指 CIFilter 删除 alpha 通道的自然行为?那我试试 CIBlendWithMask。
  • @JonathanCichon 您能否发表您的评论作为答案?我会接受它,因为它解决了问题。

标签: ios objective-c mask cifilter


【解决方案1】:

您只能使用 CIFilters 来做到这一点。您可以使用CIBlendWithMask CIFilter,而不是使用imageWithMaskApple CIFilter Reference

【讨论】:

    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多