Monotouch:改变图像的色调,而不仅仅是饱和度

我有以下MonoTouch代码可以改变Saturation ,但我也试图改变Hue

 float hue = 0; float saturation = 1; if (colorCtrls == null) colorCtrls = new CIColorControls() { Image = CIImage.FromCGImage (originalImage.CGImage) }; else colorCtrls.Image = CIImage.FromCGImage(originalImage.CGImage); colorCtrls.Saturation = saturation; var output = colorCtrls.OutputImage; var context = CIContext.FromOptions(null); var result = context.CreateCGImage(output, output.Extent); return UIImage.FromImage(result); 

它是一个不同的filter的一部分,所以你需要使用CIHueAdjust而不是CIColorControls来控制色调。

这就是我最终做的添加色相:

  var hueAdjust = new CIHueAdjust() { Image = CIImage.FromCGImage(originalImage.CGImage), Angle = hue // Default is 0 }; var output = hueAdjust.OutputImage; var context = CIContext.FromOptions(null); var cgimage = context.CreateCGImage(output, output.Extent); return UIImage.FromImage(cgimage); 

但是,这不适用于Retina设备,返回的图像不正确缩放。