1

を変更できる次の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);
4

2 に答える 2

1

Hueを追加するために私がやったことは次のとおりです。

        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 デバイスでは機能せず、返された画像が正しくスケーリングされません。

于 2012-08-01T15:51:10.163 に答える
1

これは別のフィルターの一部であるため、色相を制御するCIHueAdjust代わりに使用する必要があります。CIColorControls

于 2012-08-01T12:52:27.863 に答える