Example #1
0
        public static Image ApplyFilter(Image image, IImageFilter filter)
        {
            if (image == null)
            {
                return(null);
            }

            var       bitmap = new Bitmap(image);
            Rectangle rect   = new Rectangle(0, 0, bitmap.Width, bitmap.Height);

            BitmapData bitmapData = bitmap.LockBits(rect, ImageLockMode.ReadWrite, bitmap.PixelFormat);

            {
                int    sizeBitmap = bitmapData.Stride * bitmap.Height;
                int    sizePixel  = bitmapData.Stride / bitmap.Width;
                byte[] pixels     = new byte[sizeBitmap];

                Marshal.Copy(bitmapData.Scan0, pixels, 0, sizeBitmap);
                {
                    filter.Filter(pixels, sizePixel);
                }
                Marshal.Copy(pixels, 0, bitmapData.Scan0, sizeBitmap);
            }
            bitmap.UnlockBits(bitmapData);

            return(bitmap);
        }
Example #2
0
        public Bitmap Transform(Bitmap image, IImageFilter filter)
        {
            var newImage = image.Copy();

            Change(newImage, filter);
            return(newImage);
        }
        private async Task Capture(IEnumerable <MediaCapture> devices, IImageFilter filter)
        {
            IEnumerable <MediaCapture> cameraDevices = devices as MediaCapture[] ?? devices.ToArray();

            while (true)
            {
                foreach (MediaCapture cameraDevice in cameraDevices)
                {
                    string cameraId = cameraDevice.MediaCaptureSettings.VideoDeviceId;

                    Debug.WriteLine($"Processing camera: {cameraId}");
                    BitmapDecoder       bitmapDecoder;
                    IRandomAccessStream imageStream;
                    try
                    {
                        Tuple <BitmapDecoder, IRandomAccessStream> photoData = await GetPhotoStreamAsync(cameraDevice);

                        bitmapDecoder = photoData.Item1;
                        imageStream   = photoData.Item2;

                        Debug.WriteLine($"Got stream from camera: {cameraId}");
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine($"Camera {cameraId} failed with message: {ex.Message}");
                        continue;
                    }
#pragma warning disable 4014
                    filter?.ProcessImageAsync(bitmapDecoder, imageStream, cameraId);
#pragma warning restore 4014
                }
            }
            // ReSharper disable once FunctionNeverReturns
        }
Example #4
0
        private IActionResult ProcessAndSend(IImageFilter filter, int x, int y, int w, int h,
                                             params object[] filterParams)
        {
            IActionResult result;

            try
            {
                using (var imgFromRequest = new Bitmap(Request.BodyReader.AsStream(true)))
                {
                    var cropArea = _service.ToCropArea(imgFromRequest.Size, x, y, w, h);
                    if (cropArea == Rectangle.Empty)
                    {
                        return(NoContent());
                    }

                    var responseImgStream = new MemoryStream();
                    using (var processedImg = _service.Process(imgFromRequest, cropArea, filter, filterParams))
                        processedImg.Save(responseImgStream, ImageFormat.Png);
                    responseImgStream.Position = 0;

                    result = File(responseImgStream, "image/png");
                }
            }
            catch (OperationCanceledException)
            {
                result = StatusCode(429);
            }
            catch (Exception e)
            {
                _log.Error(e);
                result = StatusCode(500);
            }

            return(result);
        }
        public List <ImageViewModel> GetImages(string tags = null, DateTime?dateFrom = null, DateTime?dateTo = null)
        {
            IImageFilter filter = null;

            if (!string.IsNullOrEmpty(tags))
            {
                filter = new TagFilterDecorator(filter, tags);
            }

            if (dateFrom != null || dateTo != null)
            {
                filter = new TimestampFilterDecorator(filter, dateFrom, dateTo);
            }

            var query =
                "SELECT Id, FileName, '/userImages/'+UserId+'/'+FileName AS RelativePath, Timestamp FROM dbo.Image ";
            var parameters = new Dictionary <string, object>();

            if (filter != null)
            {
                query = filter.FilterQuery(query);
                filter.AddParameters(parameters);
            }

            query += " ORDER BY FileName";
            using (var connection = new SqlConnection(_dbSettings.ConnectionString))
            {
                connection.Open();
                return(connection.Query <ImageViewModel>(query, parameters).ToList());
            }
        }
        private void ApplySelectedEffectAndShowImageAsync(WriteableBitmap bitmap)
        {
            // Find selected effect
            IImageFilter effect = null;

            if (ListBoxEffects != null)
            {
                var item = ListBoxEffects.SelectedItem as EffectItem;
                if (item != null)
                {
                    effect = item.Effect;
                }
            }

            // Apply selected effect
            if (effect == null)
            {
                // Present original
                ShowImage(bitmap);
            }
            else
            {
                var dispatcher = Dispatcher;

                // Apply Effect on int[] since WriteableBitmap can't be used in background thread
                var width        = bitmap.PixelWidth;
                var height       = bitmap.PixelHeight;
                var resultPixels = effect.process(new HaoRan.ImageFilter.Image(bitmap));

                // Present result
                // WriteableBitmap ctor has to be invoked on the UI thread
                resultPixels.copyPixelsFromBuffer();
                dispatcher.BeginInvoke(() => ShowImage(resultPixels.destImage));
            }
        }
Example #7
0
        private void LoadImage(ExtendedImage image)
        {
            Contract.Requires(image != null);

            if (!_isLoadingImage)
            {
                _isLoadingImage = true;

                if (Filter != null)
                {
                    IImageFilter filter = Filter;

                    ThreadPool.QueueUserWorkItem(x =>
                    {
                        ExtendedImage filteredImage = ExtendedImage.ApplyFilters(image, filter);

                        Dispatcher.BeginInvoke(() => AssignImage(filteredImage));
                    });
                }
                else
                {
                    AssignImage(image);
                }
            }
        }
 public ProcessFilter(SourceData sourceData, IImageFilter filter, int fromPixel, int toPixel, ManualResetEvent doneEvent)
 {
     _sourceData = sourceData;
     _filter     = filter;
     _fromPixel  = fromPixel;
     _toPixel    = toPixel;
     _doneEvent  = doneEvent;
 }
Example #9
0
 public void Change(Bitmap image, IImageFilter filter)
 {
     foreach (var pixel in image.GetPixels())
     {
         var newColor = filter.Apply(pixel.Color);
         image.SetPixel(pixel.X, pixel.Y, newColor);
     }
 }
Example #10
0
 public MainForm()
 {
     InitializeComponent();
     _imageProcessService = ImageProcessService.Instance;
     _imageProcessService.OnProgressUpdate  += imageProcessService_OnProgressUpdate;
     _imageProcessService.OnProcessComplete += imageProcessService_OnProcessComplete;
     _selectedFilterValues = new SelectedFilterValues();
     _selectedImageFilter  = new GammaFilter(_selectedFilterValues.Gamma);
 }
        //change the current filter to the given new one
        private void ChangeCurrentFilter(IImageFilter newFilter)
        {
            ComboBox filterComboBox = ((System.Windows.Controls.ComboBox) this.FindName("FilterSelectComboBox"));
            var      filter         = filterManager.GetFilterByName((string)filterComboBox.SelectedItem);

            this.currentFilter = filter;

            DisplayCurrentFilterSettings();
        }
Example #12
0
        /// <summary>
        /// Applies Grayscale toning to the image.
        /// </summary>
        /// <typeparam name="TColor">The pixel format.</typeparam>
        /// <typeparam name="TPacked">The packed format. <example>uint, long, float.</example></typeparam>
        /// <param name="source">The image this method extends.</param>
        /// <param name="rectangle">
        /// The <see cref="Rectangle"/> structure that specifies the portion of the image object to alter.
        /// </param>
        /// <param name="mode">The formula to apply to perform the operation.</param>
        /// <returns>The <see cref="Image{TColor, TPacked}"/>.</returns>
        public static Image <TColor, TPacked> Grayscale <TColor, TPacked>(this Image <TColor, TPacked> source, Rectangle rectangle, GrayscaleMode mode = GrayscaleMode.Bt709)
            where TColor : struct, IPackedPixel <TPacked>
            where TPacked : struct
        {
            IImageFilter <TColor, TPacked> processor = mode == GrayscaleMode.Bt709
                ? (IImageFilter <TColor, TPacked>) new GrayscaleBt709Processor <TColor, TPacked>()
                : new GrayscaleBt601Processor <TColor, TPacked>();

            return(source.Process(rectangle, processor));
        }
        public void RegisterFilter(string name, IImageFilter filter)
        {
            if (IsRegistered(name))
            {
                throw new Exception($"Filter with name \"{name}\" already registered");
            }

            _filtersCache.AddOrUpdate(name, filter, (s, imageFilter) => imageFilter);
            _filtersCache.TryAdd(name, filter);
        }
Example #14
0
        /// <summary>
        /// Handles the Click event of the ChangeColorsButton control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Windows.RoutedEventArgs"/> instance containing the event data.</param>
        private void ChangeColorsButton_Click(object sender, RoutedEventArgs e)
        {
            if (Container.Source != null && Container.Source.IsFilled)
            {
                IImageFilter[] filters =
                    new IImageFilter[] { new Brightness((int)BrightnessSlider.Value), new Contrast((int)ContrastSlider.Value) };

                Container.Source = ExtendedImage.ApplyFilters(Container.Source, filters);
            }
        }
Example #15
0
        public TimestampFilterDecorator(IImageFilter baseFilter, DateTime?start, DateTime?end)
            : base(baseFilter)
        {
            if (start == null && end == null)
            {
                throw new ArgumentException("At least one value must be set.");
            }

            _start = start;
            _end   = end;
        }
Example #16
0
        public static IImageFilter bindTo_IImageFilter(IComponentIntrospect component)
        {
            global::System.IntPtr cPtr = solarPINVOKE.bindTo_IImageFilter(IComponentIntrospect.getCPtr(component));
            IImageFilter          ret  = (cPtr == global::System.IntPtr.Zero) ? null : new IImageFilter(cPtr, true);

            if (solarPINVOKE.SWIGPendingException.Pending)
            {
                throw solarPINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
        public async Task ApplyFilter(IImageFilter imageFilter, EdgeHandling edgeHandling)
        {
            if (IsRunning || _sourceBitmap == null)
            {
                return;
            }
            IsRunning = true;
            await Task.Run(() => { ApplyFilterMultithreaded(imageFilter, edgeHandling); });

            IsRunning = false;
        }
        public Form1(IThemeService themeService, IPaperWallRssParser paperWallRssParser, IImageFilter imageFilter, IAsyncDownloadManager asyncDownloadManager)
        {
            this._themeService = themeService;
            this._paperWallRssParser = paperWallRssParser;
            this._imageFilter = imageFilter;
            this._downloadManager = asyncDownloadManager;
            Init();
            DownloadTimer_Tick(this, null);
            


        }
        public void filter_image_partial(string name, IImageFilter filter)
        {
            var image = Image.Load("TestImages/Backdrop.jpg");

            var watch = Stopwatch.StartNew();

            image = image.Filter(new Rectangle(40, 60, 400, 250), filter);

            Trace.WriteLine($"{ name }: { watch.ElapsedMilliseconds}ms");

            image.VerifyAndSave("TestResult/Filtered/" + name + ".partial.png");
        }
Example #20
0
        public void filter_image_partial(string name, IImageFilter filter)
        {
            var image = Image.Load("TestImages/Backdrop.jpg");

            var watch = Stopwatch.StartNew();

            image = image.Filter(new Rectangle(40, 60, 400, 250), filter);

            Trace.WriteLine($"{ name }: { watch.ElapsedMilliseconds}ms");

            image.VerifyAndSave("TestResult/Filtered/" + name + ".partial.png");
        }
Example #21
0
        public void filter_image(string name, IImageFilter filter)
        {
            var stream = File.OpenRead("TestImages/Backdrop.jpg");
            var image  = new Image(stream);

            var watch = Stopwatch.StartNew();

            image = image.Filter(filter);

            Trace.WriteLine($"{ name }: { watch.ElapsedMilliseconds}ms");

            image.VerifyAndSave("TestResult/Filtered/" + name + ".png");
        }
Example #22
0
        public Image <Rgba32> AddFilter(IImageFilter filter)
        {
            using (var context = new Context())
            {
                var acceleratorId = Accelerator.Accelerators.Where(a =>
                                                                   a.AcceleratorType == AcceleratorType.CPU)
                                    .FirstOrDefault();

                using (var accelerator = Accelerator.Create(context, acceleratorId))
                {
                    return(filter.PerformFilter(accelerator));
                }
            }
        }
Example #23
0
        /// <summary>
        /// Converts the image to a silverlight bitmap, which can be assigned
        /// to a image control.
        /// </summary>
        /// <param name="image">The image, which should be converted. Cannot be null
        /// (Nothing in Visual Basic).</param>
        /// <param name="filter">The filter, which should be applied before converting the
        /// image or null, if no filter should be applied to. Cannot be null.</param>
        /// <returns>The resulting bitmap.</returns>
        /// <exception cref="ArgumentNullException"><paramref name="filter"/> is null
        /// (Nothing in Visual Basic).</exception>
        public static WriteableBitmap ToBitmap(this ImageBase image, IImageFilter filter)
        {
            Contract.Requires <ArgumentNullException>(image != null, "Image cannot be null.");
            Contract.Requires <ArgumentException>(image.IsFilled, "Image has not been loaded.");

            WriteableBitmap bitmap = new WriteableBitmap(image.PixelWidth, image.PixelHeight);

            ImageBase temp = image;

            if (filter != null)
            {
                temp = new ImageBase(image);

                filter.Apply(temp, image, temp.Bounds);
            }

            byte[] pixels = temp.Pixels;

            if (pixels != null)
            {
                int[] raster = bitmap.Pixels;

                if (raster != null)
                {
                    Buffer.BlockCopy(pixels, 0, raster, 0, pixels.Length);

                    for (int i = 0; i < raster.Length; i++)
                    {
                        int abgr = raster[i];
                        int a    = (abgr >> 24) & 0xff;

                        float m = a / 255f;

                        int argb = a << 24 |
                                   (int)(((abgr >> 0) & 0xff) * m) << 16 |
                                   (int)(((abgr >> 8) & 0xff) * m) << 8 |
                                   (int)(((abgr >> 16) & 0xff) * m);
                        raster[i] = argb;
                    }
                }
            }

            bitmap.Invalidate();

            return(bitmap);
        }
Example #24
0
        private void SetFilterParameters()
        {
            foreach (var control in flowLayoutPanel1.Controls)
            {
                var radioButton = control as RadioButton;

                if (radioButton != null && radioButton.Checked)
                {
                    int tagId = int.Parse(radioButton.Tag.ToString());
                    switch (tagId)
                    {
                    case 1:
                        _selectedImageFilter = new GammaFilter(_selectedFilterValues.Gamma);
                        break;

                    case 2:
                        _selectedImageFilter = new BlurFilter(_selectedFilterValues.Smooth);
                        break;

                    case 3:
                        _selectedImageFilter = new SharpenFilter(_selectedFilterValues.Sharpen);
                        break;

                    case 4:
                        _selectedImageFilter = new EdgeDetectionFilter();
                        break;

                    case 5:
                        _selectedImageFilter = new GaussianBlurFilter(_selectedFilterValues.Gaussian);
                        break;

                    case 6:
                        _selectedImageFilter = new EmbossingFilter();
                        break;

                    case 7:
                        _selectedImageFilter = new MosaicFilter();
                        break;

                    default:
                        break;
                    }
                    return;
                }
            }
        }
Example #25
0
        private void filterRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            var radioButton = sender as RadioButton;

            if (radioButton != null)
            {
                int tagId = int.Parse(radioButton.Tag.ToString());
                switch (tagId)
                {
                case 1:
                    _selectedImageFilter = new GammaFilter(_selectedFilterValues.Gamma);
                    tabControlFilterSettings.SelectedIndex = 0;
                    break;

                case 2:
                    _selectedImageFilter = new BlurFilter(_selectedFilterValues.Smooth);
                    tabControlFilterSettings.SelectedIndex = 1;
                    break;

                case 3:
                    _selectedImageFilter = new SharpenFilter(_selectedFilterValues.Sharpen);
                    tabControlFilterSettings.SelectedIndex = 2;
                    break;

                case 4:
                    _selectedImageFilter = new EdgeDetectionFilter();
                    break;

                case 5:
                    _selectedImageFilter = new GaussianBlurFilter(_selectedFilterValues.Gaussian);
                    tabControlFilterSettings.SelectedIndex = 3;
                    break;

                case 6:
                    _selectedImageFilter = new EmbossingFilter();
                    break;

                case 7:
                    _selectedImageFilter = new MosaicFilter();
                    break;

                default:
                    break;
                }
            }
        }
        public FilterManager()
        {
            //get all classes that implements IImageFilter
            var filterImplementations = from type in Assembly.GetExecutingAssembly().GetTypes()
                                        where typeof(IImageFilter).IsAssignableFrom(type)
                                        select type;

            //create instances and put them into the dict
            foreach (var filterType in filterImplementations)
            {
                if (filterType != typeof(IImageFilter))
                {
                    IImageFilter newFilter = (IImageFilter)Activator.CreateInstance(filterType);
                    filters.Add(newFilter.Name, newFilter);
                }
            }
        }
Example #27
0
 public void AddFilter(IImageFilter filter)
 {
     if (_baseImage == null)
     {
         return;
     }
     if (filter == null)
     {
         return;
     }
     if (_resultImage == null)
     {
         _resultImage = (Bitmap)_baseImage.Clone();
     }
     _resultImage = filter.Proccess(_resultImage, true);
     _filters.Add(filter);
     pictureBox.Image = _resultImage;
     UpdateViewSize();
 }
Example #28
0
        public Bitmap Process(Bitmap image, Rectangle scope, IImageFilter filter, params object[] filterParams)
        {
            if (image == null)
            {
                throw new ArgumentNullException(nameof(image));
            }
            if (filter == null)
            {
                throw new ArgumentNullException(nameof(filter));
            }

            var cropImage = image.Clone(scope, image.PixelFormat);
            var success   = filter.Filtrate(cropImage, filterParams);

            if (!success)
            {
                throw new OperationCanceledException();
            }

            return(cropImage);
        }
Example #29
0
        public Image<Rgba32> AddFilter(IImageFilter filter)
        {
            using (var context = new Context())
            {
                AcceleratorId acceleratorId = new AcceleratorId();
                if (Accelerator.Accelerators.Where(a => a.AcceleratorType == AcceleratorType.Cuda).Count() != 0)
                {
                    acceleratorId = Accelerator.Accelerators.Where(a =>
                    a.AcceleratorType == AcceleratorType.Cuda)
                        .FirstOrDefault();
                }
                else
                {
                    acceleratorId = Accelerator.Accelerators.Where(a => a.AcceleratorType == AcceleratorType.CPU).FirstOrDefault();
                }

                using (var accelerator = Accelerator.Create(context, acceleratorId))
                {
                    return filter.PerformFilter(accelerator);
                }
            }
        }
        /// <summary>
        /// Use filter
        /// </summary>
        /// <param name="_filter"></param>
        private void UseFilter(IImageFilter _filter)
        {
            NewPhoto.Source = null;

            if (OrigPhoto.Source == null)
            {
                MessageBox.Show("No Image set");
                return;
            }
            var im = WpfApplicationPicture.ImageClass.
                     ImageConverter.ConvertToBitMap((BitmapSource)OrigPhoto.Source);

            var outImage = _filter.filter(im);

            NewPhoto.Source = WpfApplicationPicture.ImageClass.
                              ImageConverter.GetImageSourceFromBitmap(outImage) as BitmapSource;
            //Dispose image
            outImage.Dispose();
            im.Dispose();
            GC.Collect();
            GC.WaitForPendingFinalizers();
            _filter = null;
        }
Example #31
0
        /// <summary>
        /// Converts the image to a png stream, which can be assigned to
        /// a silverlight image control as image source and applies the specified
        /// filter before converting the image.
        /// </summary>
        /// <param name="image">The image, which should be converted. Cannot be null
        /// (Nothing in Visual Basic).</param>
        /// <param name="filter">The filter, which should be applied before converting the
        /// image or null, if no filter should be applied to. Cannot be null.</param>
        /// <returns>The resulting stream.</returns>
        /// <exception cref="ArgumentNullException">
        ///     <para><paramref name="image"/> is null (Nothing in Visual Basic).</para>
        ///     <para>- or -</para>
        ///     <para><paramref name="filter"/> is null (Nothing in Visual Basic).</para>
        /// </exception>
        public static Stream ToStream(this ExtendedImage image, IImageFilter filter)
        {
            Contract.Requires <ArgumentNullException>(image != null, "Image cannot be null.");
            Contract.Requires <ArgumentException>(image.IsFilled, "Image has not been loaded.");

            MemoryStream memoryStream = new MemoryStream();

            try
            {
                ExtendedImage temp = image;

                if (filter != null)
                {
                    temp = image.Clone();

                    filter.Apply(temp, image, temp.Bounds);
                }

                PngEncoder encoder = new PngEncoder();
                encoder.IsWritingUncompressed = true;
                encoder.Encode(temp, memoryStream);

                memoryStream.Seek(0, SeekOrigin.Begin);
            }
            catch
            {
                if (memoryStream != null)
                {
                    memoryStream.Dispose();
                    memoryStream = null;
                }
                throw;
            }

            return(memoryStream);
        }
 public static Image Filter(this Image source, Rectangle rectangle, IImageFilter filter)
 {
     return PerformAction(source, image => filter.Apply(image, rectangle));
 }
        /// <summary>
        ///     The add filter.
        /// </summary>
        /// <param name="imageFilter">
        ///     The image filter.
        /// </param>
        public void AddFilter(IImageFilter imageFilter)
        {
            if (imageFilter == null)
            {
                throw new ArgumentNullException("imageFilter");
            }

            this.ImageFilters.Add(imageFilter);
        }
		/// <summary>
		/// Initialises a new instance of ImageEventArgs with the associated image.
		/// </summary>
		/// <param name="image">The image that this event is based around.</param>
		/// <param name="filter">The filter currently being used to process this image.</param>
		public ImageEventArgs(Image image, IImageFilter filter)
		{
			Image = image;
			Filter = filter;
		}
Example #35
0
            static Samples()
            {
                _list = new List<ImageGenerator>();

                rippleEffect = new GSImageFilter()
                {
                    Name = "Ripple 2x",
                    Description = "period: 20, amplitude: 5, vert. + horiz.",
                    runGSFilter = (GSImage image) =>
                    {
                        Gimp.Procedure procedure =
                           new Gimp.Procedure("plug_in_ripple");
                        procedure.Run(image.Image, image.Drawable,
                            20, 5, 0, 1, 1, 1, 0);
                        procedure.Run(image.Image, image.Drawable,
                            20, 5, 1, 1, 1, 1, 0);
                    }
                };
                _list.Add(new ImageGenerator() {
                    Name = "Euclid + ripple",
                    SpotFunction = SpotFunction.Samples.euclidDot,
                    Effects = { rippleEffect }
                });

                noiseEffect = new GSImageFilter()
                {
                    Name = "Noise",
                    Description = "RGB noise, independent, corelated, amount: 0.2",
                    runGSFilter = (GSImage image) =>
                    {
                        Gimp.Procedure procedure =
                           new Gimp.Procedure("plug_in_rgb_noise");
                        procedure.Run(image.Image, image.Drawable,
                            1, 1, 0.2);
                    }
                };
                _list.Add(new ImageGenerator()
                {
                    Name = "Euclid + noise",
                    SpotFunction = SpotFunction.Samples.euclidDot,
                    Effects = { noiseEffect }
                });

                pixelizeEffect = new GSImageFilter()
                {
                    Name = "Pixelize",
                    Description = "block: 4px",
                    runGSFilter = (GSImage image) =>
                    {
                        Gimp.Procedure procedure =
                            new Gimp.Procedure("plug_in_pixelize");
                        procedure.Run(image.Image, image.Drawable, 4);
                    }
                };
                _list.Add(new ImageGenerator()
                {
                    Name = "Euclid + pixelize",
                    SpotFunction = SpotFunction.Samples.euclidDot,
                    Effects = { pixelizeEffect }
                });

                canvasEffect = new GSImageFilter()
                {
                    Name = "Canvas",
                    Description = "direction: 0, depth: 4",
                    runGSFilter = (GSImage image) =>
                    {
                        Gimp.Procedure procedure =
                           new Gimp.Procedure("plug_in_apply_canvas");
                        procedure.Run(image.Image, image.Drawable, 0, 4);
                    }
                };
                _list.Add(new ImageGenerator()
                {
                    Name = "Euclid + canvas",
                    SpotFunction = SpotFunction.Samples.euclidDot,
                    Effects = { canvasEffect }
                });

                _list.Add(new ImageGenerator()
                {
                    Name = "Euclid + pixelize + ripple",
                    SpotFunction = SpotFunction.Samples.euclidDot,
                    Effects = { pixelizeEffect, rippleEffect }
                });

                patternEffect = new GSImageFilter()
                {
                    Name = "Pattern",
                    Description = "Veryovka-Buchanan: current pattern + histogram equalization",
                    runGSFilter = (GSImage image) =>
                    {
                        image.Drawable.Fill(Gimp.FillType.Pattern);
                        image.Drawable.Equalize(false);
                    }
                };
                _list.Add(new ImageGenerator()
                {
                    Name = "Veryovka-Buchanan",
                    SpotFunction = SpotFunction.Samples.nullSpot,
                    Effects = { patternEffect }
                });
            }
Example #36
0
 public EffectItem(IImageFilter effect, string thumbnailRelativeResourcePath, string name)
     : this(effect, thumbnailRelativeResourcePath)
 {
     Name = name;
 }
Example #37
0
 public EffectItem(IImageFilter effect, string thumbnailRelativeResourcePath)
     : this(effect)
 {
     // Load the thumbnail from the resource stream using the WriteableBitmapEx lib
       Thumbnail = new BitmapImage(new System.Uri(thumbnailRelativeResourcePath, System.UriKind.RelativeOrAbsolute));// new WriteableBitmap(0, 0).FromResource(thumbnailRelativeResourcePath);
 }
Example #38
0
 public EffectItem(IImageFilter effect)
 {
     Effect = effect;
      Name = effect.Name;
 }
		/// <summary>
		/// Initialises a new instance of ImageProcessor with an initial image filter to use.
		/// </summary>
		/// <param name="filter">The initial image filter to use when processing.</param>
		public ImageProcessor(IImageFilter filter)
		{
			Filters.Add(filter);
		}
 public static Image Filter(this Image source, IImageFilter filter) => Filter(source, source.Bounds, filter);
 /// <summary>
 /// Applies the processor to the image.
 /// <remarks>This method does not resize the target image.</remarks>
 /// </summary>
 /// <typeparam name="TColor">The pixel format.</typeparam>
 /// <typeparam name="TPacked">The packed format. <example>uint, long, float.</example></typeparam>
 /// <param name="source">The image this method extends.</param>
 /// <param name="sourceRectangle">
 /// The <see cref="Rectangle"/> structure that specifies the portion of the image object to draw.
 /// </param>
 /// <param name="processor">The processors to apply to the image.</param>
 /// <returns>The <see cref="Image{TColor, TPacked}"/>.</returns>
 internal static Image <TColor, TPacked> Process <TColor, TPacked>(this Image <TColor, TPacked> source, Rectangle sourceRectangle, IImageFilter <TColor, TPacked> processor)
     where TColor : struct, IPackedPixel <TPacked>
     where TPacked : struct
 {
     return(PerformAction(source, (sourceImage) => processor.Apply(sourceImage, sourceRectangle)));
 }
		/// <summary>
		/// Adds a new filter to the filter processing queue.
		/// </summary>
		/// <param name="filter">The filter to be added.</param>
		/// <remarks>Images are processed by filters in the order that they are added to the
		/// filter queue.</remarks>
		public void AddFilter(IImageFilter filter)
		{
			Filters.Add(filter);
		}