public SeaShellEffect()
        {
            m_hueSaturationEffect = new HueSaturationEffect() { Saturation = 0.6 -1 };
            m_vibranceEffect = new VibranceEffect() { Level = .6 };
            m_splitToningEffect = new SplitToneEffect
            {
                ShadowsHue = 230, 
                ShadowsSaturation = 37, 
                HighlightsHue = 50, 
                HighlightsSaturation = 20
            };

            var globalCurve = new Curve(CurveInterpolation.Linear, new[]
            {
                new Point(0, 10),
                new Point(32, 68),
                new Point(64, 119),
                new Point(96, 158),
                new Point(128, 187),
                new Point(160, 209),
                new Point(192, 226),
                new Point(255, 248)                
            });

            var curve = new Curve(CurveInterpolation.Linear, new[]
            {
                new Point(10, 0),
                new Point(32, 27),
                new Point(70, 70)                
            });

            var redCurve = globalCurve;
            var greenCurve = Curve.Compose(curve, globalCurve, null);
            var blueCurve = globalCurve;

            var curvesEffect = new CurvesEffect(redCurve, greenCurve, blueCurve);

            var colorizationLayerList = new LayerList(
					new AdjustmentLayer(LayerStyle.Normal(), new GrayscaleEffect()),
					new Layer(LayerStyle.Multiply(), context => new ColorImageSource(context.HintedRenderSize, Color.FromArgb(0xff, 0xff, 0xe6, 0x99)))
                );

            LayerList.AddRange(
                new AdjustmentLayer(LayerStyle.Normal(0.2), context => colorizationLayerList.ToImageProvider(context.BackgroundImage, context.HintedRenderSize, context.HintedRenderSize)),

                new AdjustmentLayer(LayerStyle.Normal(), new ContrastEffect(-0.15)),
                new AdjustmentLayer(LayerStyle.Normal(), curvesEffect),
                new AdjustmentLayer(LayerStyle.Normal(), m_hueSaturationEffect),
                new AdjustmentLayer(LayerStyle.Normal(), m_vibranceEffect),
                new AdjustmentLayer(LayerStyle.Normal(), m_splitToningEffect)               
           );

            Editors.Add(new RangeEditorViewModel<SeaShellEffect>("SaturationLevel", -1.0, 1.0, this, filter => filter.SaturationLevel, (filter, value) => filter.SaturationLevel = value));
        //    Editors.Add(new RangeEditorViewModel<SeaShellEffect>("ContrastLevel", -1.0, 1.0, this, filter => filter.ContrastLevel, (filter, value) => filter.ContrastLevel = value));
            Editors.Add(new RangeEditorViewModel<SeaShellEffect>("VibranceLevel", 0, 1.0, this, filter => filter.VibranceLevel, (filter, value) => filter.VibranceLevel = value));
			Editors.Add(new RangeEditorViewModel<SeaShellEffect>("ShadowsHue", 0, 365, this, filter => filter.ShadowsHue, (filter, value) => filter.ShadowsHue = (int)value));
			Editors.Add(new RangeEditorViewModel<SeaShellEffect>("ShadowsSaturation", 0, 100, this, filter => filter.ShadowsSaturation, (filter, value) => filter.ShadowsSaturation = (int)value));
			Editors.Add(new RangeEditorViewModel<SeaShellEffect>("HighlightsHue", 0, 365, this, filter => filter.HighlightsHue, (filter, value) => filter.HighlightsHue = (int)value));
			Editors.Add(new RangeEditorViewModel<SeaShellEffect>("HighlightsSaturation", 0, 100, this, filter => filter.HighlightsSaturation, (filter, value) => filter.HighlightsSaturation = (int)value));          
        }
Ejemplo n.º 2
0
        private ObservableCollection <VideoEffectsViewModel> CreateEditableEffects()
        {
            var effects = new ObservableCollection <VideoEffectsViewModel>();

            m_contrastEffect = new ContrastEffect();
            effects.Add(new VideoEffectsViewModel(m_contrastEffect, "contrast.png")
            {
                Name = "Contrast", MaxValue = 1.0, MinValue = -1.0
            });

            m_hueSaturationEffect = new HueSaturationEffect(m_contrastEffect);

            effects.Add(new VideoEffectsViewModel(m_hueSaturationEffect, "saturation.png")
            {
                Name = "Hue", MaxValue = 1.0, MinValue = -1.0, PropertyName = "Hue"
            });
            effects.Add(new VideoEffectsViewModel(m_hueSaturationEffect, "saturation.png")
            {
                Name = "Saturation", MaxValue = 1.0, MinValue = -1.0, PropertyName = "Saturation"
            });

            m_brightnessEffect = new BrightnessEffect(m_hueSaturationEffect);
            effects.Add(new VideoEffectsViewModel(m_brightnessEffect, "brightness.png")
            {
                Name = "Brightness", MaxValue = 1.0, MinValue = -1.0
            });

            return(effects);
        }
Ejemplo n.º 3
0
        public void HueSaturationEffect2()
        {
            var src = GetSourceImage("input.png");

            var effect = new HueSaturationEffect(12, 50, 50);

            effect.Render(src);

            Compare(src, "huesaturation2.png");
        }
Ejemplo n.º 4
0
        public SeaShellEffect()
        {
            m_hueSaturationEffect = new HueSaturationEffect()
            {
                Saturation = 0.6 - 1
            };
            m_vibranceEffect = new VibranceEffect()
            {
                Level = .6
            };
            m_splitToningEffect = new SplitToneEffect
            {
                ShadowsHue           = 230,
                ShadowsSaturation    = 37,
                HighlightsHue        = 50,
                HighlightsSaturation = 20
            };

            var globalCurve = new Curve(CurveInterpolation.Linear, new[]
            {
                new Point(0, 10),
                new Point(32, 68),
                new Point(64, 119),
                new Point(96, 158),
                new Point(128, 187),
                new Point(160, 209),
                new Point(192, 226),
                new Point(255, 248)
            });

            var curve = new Curve(CurveInterpolation.Linear, new[]
            {
                new Point(10, 0),
                new Point(32, 27),
                new Point(70, 70)
            });

            var redCurve   = globalCurve;
            var greenCurve = Curve.Compose(curve, globalCurve, null);
            var blueCurve  = globalCurve;

            var curvesEffect = new CurvesEffect(redCurve, greenCurve, blueCurve);

            var colorizationLayerList = new LayerList(
                new AdjustmentLayer(LayerStyle.Normal(), new GrayscaleEffect()),
                new Layer(LayerStyle.Multiply(), context => new ColorImageSource(context.HintedRenderSize, Color.FromArgb(0xff, 0xff, 0xe6, 0x99)))
                );

            LayerList.AddRange(
                new AdjustmentLayer(LayerStyle.Normal(0.2), context => colorizationLayerList.ToImageProvider(context.BackgroundImage, context.HintedRenderSize, context.HintedRenderSize)),

                new AdjustmentLayer(LayerStyle.Normal(), new ContrastEffect(-0.15)),
                new AdjustmentLayer(LayerStyle.Normal(), curvesEffect),
                new AdjustmentLayer(LayerStyle.Normal(), m_hueSaturationEffect),
                new AdjustmentLayer(LayerStyle.Normal(), m_vibranceEffect),
                new AdjustmentLayer(LayerStyle.Normal(), m_splitToningEffect)
                );

            Editors.Add(new RangeEditorViewModel <SeaShellEffect>("SaturationLevel", -1.0, 1.0, this, filter => filter.SaturationLevel, (filter, value) => filter.SaturationLevel = value));
            //    Editors.Add(new RangeEditorViewModel<SeaShellEffect>("ContrastLevel", -1.0, 1.0, this, filter => filter.ContrastLevel, (filter, value) => filter.ContrastLevel = value));
            Editors.Add(new RangeEditorViewModel <SeaShellEffect>("VibranceLevel", 0, 1.0, this, filter => filter.VibranceLevel, (filter, value) => filter.VibranceLevel                      = value));
            Editors.Add(new RangeEditorViewModel <SeaShellEffect>("ShadowsHue", 0, 365, this, filter => filter.ShadowsHue, (filter, value) => filter.ShadowsHue                               = (int)value));
            Editors.Add(new RangeEditorViewModel <SeaShellEffect>("ShadowsSaturation", 0, 100, this, filter => filter.ShadowsSaturation, (filter, value) => filter.ShadowsSaturation          = (int)value));
            Editors.Add(new RangeEditorViewModel <SeaShellEffect>("HighlightsHue", 0, 365, this, filter => filter.HighlightsHue, (filter, value) => filter.HighlightsHue                      = (int)value));
            Editors.Add(new RangeEditorViewModel <SeaShellEffect>("HighlightsSaturation", 0, 100, this, filter => filter.HighlightsSaturation, (filter, value) => filter.HighlightsSaturation = (int)value));
        }
Ejemplo n.º 5
0
        private ObservableCollection<VideoEffectsViewModel> CreateEditableEffects()
        {
            var effects = new ObservableCollection<VideoEffectsViewModel>();

            m_contrastEffect = new ContrastEffect();
            effects.Add(new VideoEffectsViewModel(m_contrastEffect, "contrast.png") { Name = "Contrast", MaxValue = 1.0, MinValue = -1.0 });

            m_hueSaturationEffect = new HueSaturationEffect(m_contrastEffect);

            effects.Add(new VideoEffectsViewModel(m_hueSaturationEffect, "saturation.png") { Name = "Hue", MaxValue = 1.0, MinValue = -1.0, PropertyName = "Hue" });
            effects.Add(new VideoEffectsViewModel(m_hueSaturationEffect, "saturation.png") { Name = "Saturation", MaxValue = 1.0, MinValue = -1.0, PropertyName = "Saturation" });

            m_brightnessEffect = new BrightnessEffect(m_hueSaturationEffect);
            effects.Add(new VideoEffectsViewModel(m_brightnessEffect, "brightness.png") { Name = "Brightness", MaxValue = 1.0, MinValue = -1.0 });

            return effects;
        }
Ejemplo n.º 6
0
        private async void HueSaturationThumb_Tapped(object sender, TappedRoutedEventArgs e)
        {
            FilteredImage.Width = PreviewImage.ActualWidth;
            FilteredImage.Height = PreviewImage.ActualHeight;

            PreviewImage.Visibility = Visibility.Collapsed;
            FilteredImage.Visibility = Visibility.Visible;
            using (_hueSaturationEffect = new HueSaturationEffect())
                await ApplyEffectAsync(fPhotoStream, _hueSaturationEffect, FilteredImage);
        }
Ejemplo n.º 7
0
        private async void OnTap(object sender, TappedRoutedEventArgs e)
        {
            

            ImageEncodingProperties imageProperties = ImageEncodingProperties.CreateJpeg();

            mediaCapture.CapturePhotoToStreamAsync(imageProperties, fPhotoStream).AsTask().Wait();

            fPhotoStream.FlushAsync().AsTask().Wait();
            fPhotoStream.Seek(0);
            WriteableBitmap bitter = new WriteableBitmap(100, 100);
            bitter.SetSource(fPhotoStream);

            await mediaCapture.StopPreviewAsync();
            captureElement.Visibility = Visibility.Collapsed;
            PreviewImage.Visibility = Visibility.Visible;

            PreviewImage.Source = bitter;
            NormalThumb.Source = bitter;

            using (_grayscaleEffect = new GrayscaleEffect())
                await ApplyEffectAsync(fPhotoStream, _grayscaleEffect, GreyScaleThumb);

            using (_colorboostEffect = new ColorBoostEffect())
            {
                _colorboostEffect.Gain = 0.75;
                await ApplyEffectAsync(fPhotoStream, _colorboostEffect, ColorBoostThumb);
            }

            using (_hueSaturationEffect = new HueSaturationEffect())
                await ApplyEffectAsync(fPhotoStream, _hueSaturationEffect, HueSaturationThumb);

            using (_lensblurEffect = new LensBlurEffect())
                await ApplyEffectAsync(fPhotoStream, _lensblurEffect, LensBlurThumb);

            using (_antiqueEffect = new AntiqueEffect())
                await ApplyEffectAsync(fPhotoStream, _antiqueEffect, SepiaThumb);


            
            

            inking_initialization();
            myInkCanvas.Visibility = Visibility.Visible;
        }