【问题标题】:Image Manipulation Filter like white Balance, Exposure, split Tone etc on IOSIOS上的图像处理过滤器,如白平衡、曝光、分割色调等
【发布时间】:2011-10-27 17:38:23
【问题描述】:

一周以来,我一直在尝试为我的 IOS 应用程序实现一些图像处理过滤器,例如白平衡、曝光和 SPLIT TONING(如在 Photoshop 中),但我没有获得实现其中任何一个的标准实现。

我找到了通过ImageMagick实现的shell脚本

但不知道如何将这些脚本更改为 C 或目标 C 中的等效脚本。 我只是使用一些转换命令来做神奇的事情。

提前致谢。请帮忙。

白平衡也可以通过改变图像的温度和色调来实现。所以如果有人知道如何操纵这些图像的色调和温度,请帮我解决这个问题。谢谢。

【问题讨论】:

    标签: iphone objective-c ios image-processing image-manipulation


    【解决方案1】:

    从 iOS 5 开始,Core Image filters 可用。

    一个非常简单的例子,假设你在 Interface Builder 中添加了一个名为 imageView 的 UIImageView IBOutlet,并设置了一个图像文件。

    1. 添加 CoreImage 框架。
    2. #import <CoreImage/CoreImage.h>
    3. viewDidLoad 中,添加以下内容:

      CIImage *inputImage = [[CIImage alloc] initWithImage:self.imageView.image];
      CIFilter *exposureAdjustmentFilter = [CIFilter filterWithName:@"CIExposureAdjust"];
      [exposureAdjustmentFilter setDefaults];
      [exposureAdjustmentFilter setValue:inputImage forKey:@"inputImage"];
      [exposureAdjustmentFilter setValue:[NSNumber numberWithFloat:5.0f] forKey:@"inputEV"];
      CIImage *outputImage = [exposureAdjustmentFilter valueForKey:@"outputImage"];
      CIContext *context = [CIContext contextWithOptions:nil];
      self.imageView.image = [UIImage imageWithCGImage:[context createCGImage:outputImage fromRect:outputImage.extent]];
      

    另一种选择可能是使用来自 GitHub ios-image-filters 项目的过滤器。

    【讨论】:

    • 确实感谢您的快速回复。我已经浏览了 CoreImage 的苹果文档,很高兴它终于可以在 IOS 上使用。但不幸的是,我当前的应用程序在 IOS 4 上,我没有升级选项。如果您可以在没有 CoreImage 的情况下指导我了解这方面的一些内容,请提供帮助。再次感谢。
    【解决方案2】:

    作为ios-image-filters的作者,我可以告诉你,我们的项目有一个可以用来修改白平衡的levels方法。它被实现为 UIImage 上的一个类别并模仿 Photoshop 过滤器,因此调用它很简单:

    [self.imageView.image levels:0 mid:128 white:255];
    

    而且,它兼容iOS 3 & 4,而不仅仅是iOS 5。它是开源的,没有依赖,所以如果你没有找到你需要的过滤器,它应该很容易修改。

    【讨论】:

    • 我借此机会非常感谢您发布如此精彩的图像处理示例项目。真的谢谢!
    • 我已经经历过了。您关于使用级别来实现 WhiteBalance 的建议似乎没有给出结果。我需要它是可调节的。我尝试了不同的值范围,但没有给出好的结果。你能建议我吗?还有曝光怎么办?再次感谢。
    • 你好,银。好的,我对代码做了一些更改。'code' [self setSliderMin:64.0 Max:128.0 Value:64.0]; (配置滑块的自定义函数)'code' self.imageView.image = [image levels:0 mid:(192.0 - value) white:255];我得到的结果更像是 EXPOSURE 而不是 WHITEBALANCE。现在我对我实际实现的目标有点困惑。请解释。谢谢。
    • 根据我对photoshop和图像处理的理解,要修改“白平衡”,您实际上是将原始图像中的一个颜色值映射为纯白色,然后对所有颜色应用统一映射在 0 和您选择的颜色之间。曲线过滤器允许您创建非均匀映射。我花了一段时间在 Photoshop 中尝试了层次和曲线,然后编写了相应的代码,才对这种关系有了直观的把握。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    相关资源
    最近更新 更多