public CanvasRenderTarget applyHueRotationEffects(CanvasBitmap workingBitmap) { //CanvasBitmap workingBitmap = SelectWorkingBitmap(useOriginalBitmap); if (workingBitmap != null) { int ww = (int)workingBitmap.SizeInPixels.Width; int hh = (int)workingBitmap.SizeInPixels.Height; TemperatureAndTintEffect temperatureAndTintEffect = new TemperatureAndTintEffect(); temperatureAndTintEffect.Source = workingBitmap; temperatureAndTintEffect.Temperature = (float)hueTemperature; temperatureAndTintEffect.Tint = (float)hueTint; HueRotationEffect hueRotationEffect = new HueRotationEffect(); hueRotationEffect.Angle = (float)hueRotationAngle; hueRotationEffect.Source = temperatureAndTintEffect; PosterizeEffect posterizeEffect = null; EdgeDetectionEffect edgeDetectionEffect = null; if (hueDoPosterize) { posterizeEffect = new PosterizeEffect(); posterizeEffect.Source = hueRotationEffect; posterizeEffect.RedValueCount = huePosterizeRedCount; posterizeEffect.BlueValueCount = huePosterizeBlueCount; posterizeEffect.GreenValueCount = huePosterizeGreenCount; edgeDetectionEffect = new EdgeDetectionEffect(); edgeDetectionEffect.Source = posterizeEffect; edgeDetectionEffect.Amount = (float)0.9; edgeDetectionEffect.BlurAmount = 1; edgeDetectionEffect.OverlayEdges = true; } //if (canvasRenderTarget != null) // canvasRenderTarget.Dispose(); CanvasRenderTarget canvasRenderTarget = new CanvasRenderTarget(CanvasDevice.GetSharedDevice(), ww, hh, canvasBitmap.Dpi); using (var session = canvasRenderTarget.CreateDrawingSession()) { if (hueDoPosterize) { //session.DrawImage(posterizeEffect); session.DrawImage(edgeDetectionEffect); } else { session.DrawImage(hueRotationEffect); } } return(canvasRenderTarget); } return(null); }
async Task <Uri> Posterize() { using (var source = new StorageFileImageSource(imageStorageFile)) { var inf = await source.GetInfoAsync(); using (var sharpnessEffect = new PosterizeEffect(source) { ColorComponentValueCount = 10 }) { LastEffect = sharpnessEffect; return(await SaveToImage()); } } }
private ICanvasImage CreatePosterize() { textLabel = requiresWin10; var posterizeEffect = new PosterizeEffect { Source = bitmapTiger }; // Animation changes the number of distinct color levels. animationFunction = elapsedTime => { posterizeEffect.RedValueCount = 2 + (int)(Math.Pow(0.5 + Math.Sin(elapsedTime) * 0.5, 4) * 10); posterizeEffect.GreenValueCount = 2 + (int)(Math.Pow(0.5 + Math.Sin(elapsedTime / 1.3) * 0.5, 4) * 10); posterizeEffect.BlueValueCount = 2 + (int)(Math.Pow(0.5 + Math.Sin(elapsedTime / 1.7) * 0.5, 4) * 10); }; return(posterizeEffect); }