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设备,返回的图像不正确缩放。