Пример #1
0
        /// <summary>
        /// Recibe una imagen y la retorna con un filtro del tipo negativo aplicado
        /// </summary>
        /// <param name="image">Imagen a la cual se le va a plicar el filtro.</param>
        /// <returns>Imagen con el filtro aplicado</returns>
        public IPicture Filter(IPicture image)
        {
            Debug.Assert(image != null);
            IPicture negativo = image.Clone();

            for (int x = 0; x < negativo.Width; x++)
            {
                for (int y = 0; y < negativo.Height; y++)
                {
                    Color colorOriginal = negativo.GetColor(x, y);

                    byte rOriginal = colorOriginal.R;
                    byte gOriginal = colorOriginal.G;
                    byte bOriginal = colorOriginal.B;

                    byte rNeg = Convert.ToByte(Math.Abs(rOriginal - byte.MaxValue));
                    byte gNeg = Convert.ToByte(Math.Abs(gOriginal - byte.MaxValue));
                    byte bNeg = Convert.ToByte(Math.Abs(bOriginal - byte.MaxValue));

                    Color colorNegativo;
                    colorNegativo = Color.FromArgb(rNeg, gNeg, bNeg);

                    negativo.SetColor(x, y, colorNegativo);
                }
            }
            return(negativo);
        }
        /// <summary>
        /// Recibe una imagen y la retorna con un filtro del tipo inventado aplicado
        /// </summary>
        /// <param name="image">Imagen a la cual se le va a plicar el filtro.</param>
        /// <returns>Imagen con el filtro aplicado</returns>
        public IPicture Filter(IPicture image)
        {
            Debug.Assert(image != null);
            IPicture invento = image.Clone();

            for (int x = 0; x < invento.Width; x++)
            {
                for (int y = 0; y < invento.Height; y++)
                {
                    Color colorOriginal = invento.GetColor(x, y);

                    byte rOriginal = colorOriginal.R;
                    byte gOriginal = colorOriginal.G;
                    byte bOriginal = colorOriginal.B;

                    byte rNeg = Convert.ToByte(Math.Abs(rOriginal / 2));
                    byte gNeg = Convert.ToByte(Math.Abs(gOriginal / 10));
                    byte bNeg = Convert.ToByte(Math.Abs(bOriginal / 5));

                    var rand = new Random();


                    Color colorCualquiera;
                    colorCualquiera = Color.FromArgb(rNeg, gNeg, bNeg);
                    // colorCualquiera = Color.FromArgb(rNeg, gNeg, bNeg);

                    invento.SetColor(x, y, colorCualquiera);
                }
            }
            return(invento);
        }
 /// <summary>
 /// La cañería recibe una imagen, construye un duplicado de la misma,
 /// y envía la original por una cañería y el duplicado por otra.
 /// </summary>
 /// <param name="picture">imagen a filtrar y enviar a las siguientes cañerías</param>
 public IPicture Send(IPicture picture)
 {
     if (this.condition)
     {
         return(this.nextPipe.Send(picture));
     }
     return(this.next2Pipe.Send(picture.Clone()));
 }
Пример #4
0
        public IPicture Filter(IPicture image)
        {
            IPicture imagenFiltrada = image.Clone();

            // delega la tarea a el componente
            this.pictureprovider.SavePicture(imagenFiltrada, path);
            return(imagenFiltrada);
        }
Пример #5
0
        public IPicture Filter(IPicture image)
        {
            IPicture        savePicture = image.Clone();
            PictureProvider p           = new PictureProvider();

            p.SavePicture(savePicture, "NewImage.jpg");
            return(savePicture);
        }
Пример #6
0
        public IPicture Filter(IPicture image)
        {
            Count++;
            IPicture        pic      = image.Clone();
            PictureProvider picSaved = new PictureProvider();

            picSaved.SavePicture(pic, $@"FilteredImage{Count}.jpg");
            return(pic);
        }
        public IPicture Filter(IPicture image)
        {
            IPicture copy = image.Clone();

            // Delegamos la tarea de guardar la imagen a la instancia de PictureProvider
            this.Provider.SavePicture(copy, this.path);
            return(this.Provider.GetPicture(this.path));
            //return image;
        }
Пример #8
0
        public IPicture Filter(IPicture image)
        {
            count++;
            IPicture        savePicture = image.Clone();
            PictureProvider p           = new PictureProvider();

            p.SavePicture(savePicture, $@"NewImage{count}.jpg");
            return(savePicture);
        }
Пример #9
0
        /// <summary>
        /// Recibe una imagen y la retorna con un filtro del tipo inventado aplicado
        /// </summary>
        /// <param name="image">Imagen a la cual se le va a plicar el filtro.</param>
        /// <returns>Imagen con el filtro aplicado</returns>
        public IPicture Filter(IPicture image)
        {
            Count++;
            Debug.Assert(image != null);
            IPicture        saving = image.Clone();
            PictureProvider p      = new PictureProvider();

            p.SavePicture(saving, $@"./../../images/bill{Count}.jpg");
            return(saving);
        }
Пример #10
0
 /// <summary>
 /// La cañería recibe una imagen, construye un duplicado de la misma,
 /// y envía la original por una cañería y el duplicado por otra.
 /// </summary>
 /// <param name="picture">imagen a filtrar y enviar a las siguientes cañerías</param>
 public IPicture Send(IPicture picture)
 {
     if (this.filtro.Filter(picture))
     {
         return(this.nextPipe.Send(picture));
     }
     else
     {
         return(this.next2Pipe.Send(picture.Clone()));
     }
 }
Пример #11
0
 /// <summary>
 /// La cañería recibe una imagen, construye un duplicado de la misma,
 /// y envía la original por una cañería y el duplicado por otra.
 /// </summary>
 /// <param name="picture">imagen a filtrar y enviar a las siguientes cañerías</param>
 public IPicture Send(IPicture picture)
 {
     if (FilterHasFace.hasface)
     {
         return(next2Pipe.Send(picture.Clone()));
     }
     else
     {
         return(this.nextPipe.Send(picture));
     }
 }
Пример #12
0
        public IPicture Filter(IPicture image)
        {
            IPicture twitterImg = image.Clone();

            string consumerKey       = "g7rkPB5uI2xOqELAhlNrorSU4";
            string consumerKeySecret = "8hOTyS71GrTH9Ool3rXykAJRY5AmgSPiy78b1wYUPcvfIzXeEc";
            string accessTokenSecret = "675fHmUzeaPajtj3pO64w5xd3p9YI3kco7kSvKhzeEvYe";
            string accessToken       = "1396065818-8vnV9HJFW5ArcfFg2zE9hLA68CZYFXO8Cjv6o2E";

            var twitter = new TwitterImage(consumerKey, consumerKeySecret, accessToken, accessTokenSecret);

            Console.WriteLine(twitter.PublishToTwitter("FilteredImage ", @"NewImage.jpg"));
            return(twitterImg);
        }
Пример #13
0
        /// <summary>
        /// Recibe una imagen y la retorna con el filtro aplicado.
        /// </summary>
        /// <param name="image">Imagen a la cual se le va a plicar el filtro</param>
        /// <returns>Imagen con el filtro aplicado</returns>
        public IPicture Filter(IPicture image)
        {
            IPicture imagenFiltrada = image.Clone();

            Color[,] matrizVecinos;

            for (int x = 0; x < image.Width; x++)
            {
                for (int y = 0; y < image.Height; y++)
                {
                    matrizVecinos = convolution.CrearMatriz(image, x, y);
                    imagenFiltrada.SetColor(x, y, convolution.ObtenerColorFiltrado(matrizVecinos));
                }
            }
            return(imagenFiltrada);
        }
        /// <summary>
        /// Recibe una imagen y la retorna con un filtro del tipo inventado aplicado
        /// </summary>
        /// <param name="image">Imagen a la cual se le va a plicar el filtro.</param>
        /// <returns>Imagen con el filtro aplicado</returns>
        public IPicture Filter(IPicture image)
        {
            var newImage    = image.Clone();
            var recognition = Cognitive.FaceRecognition($@"./../../images/bill{FilterSave.Instance.Count}.jpg");

            if (recognition)
            {
                var grey = new FilterGreyscale();
                newImage = grey.Filter(newImage);
            }
            else
            {
                var blur = new FilterBlurConvolution();
                newImage = blur.Filter(newImage);
            }
            return(newImage);
        }
Пример #15
0
        /// <summary>
        /// Recibe una imagen y la retorna con un filtro de escala de grises aplicado.
        /// </summary>
        /// <param name="image">Imagen a la que se le va a aplicar el filtro.</param>
        /// <returns>Imagen con el filtro aplicado.</returns>
        public IPicture Filter(IPicture image)
        {
            Debug.Assert(image != null);
            IPicture greyScale = image.Clone();

            for (int x = 0; x < greyScale.Width; x++)
            {
                for (int y = 0; y < greyScale.Height; y++)
                {
                    Color colorOriginal = greyScale.GetColor(x, y);

                    byte  rOriginal = colorOriginal.R;
                    byte  gOriginal = colorOriginal.G;
                    byte  bOriginal = colorOriginal.B;
                    int   luma      = (int)((rOriginal * 0.3) + (gOriginal * 0.59) + (bOriginal * 0.11));
                    Color colorGris;
                    colorGris = Color.FromArgb(luma, luma, luma);
                    greyScale.SetColor(x, y, colorGris);
                }
            }
            return(greyScale);
        }
Пример #16
0
 /// <summary>
 /// La cañería recibe una imagen, construye un duplicado de la misma,
 /// y envía la original por una cañería y el duplicado por otra.
 /// </summary>
 /// <param name="picture">imagen a filtrar y enviar a las siguientes cañerías</param>
 public IPicture Send(IPicture picture)
 {
     next2Pipe.Send(picture.Clone());
     return(this.nextPipe.Send(picture));
 }
Пример #17
0
        static void Main(string[] args)
        {
            // Se obtiene la imagen.
            PictureProvider p   = new PictureProvider();
            IPicture        pic = p.GetPicture(@"download.jpg");

            // Se crean los filtros que se van a utilizar.
            FilterGreyscale  filterGreyscale  = new FilterGreyscale();
            FilterNegative   filterNegative   = new FilterNegative();
            FilterSaveImage  filterSaveImage  = new FilterSaveImage();
            FilterTwitterApi filterTwitterApi = new FilterTwitterApi();
            FilterHasFace    filterHasFace    = new FilterHasFace();


            // Parte 1

            /*
             * PipeNull pipeNull = new PipeNull();
             * PipeSerial pipeFilterNegative = new PipeSerial(filterNegative, pipeNull);
             * PipeSerial pipeFilterGreyScale = new PipeSerial(filterGreyscale, pipeFilterNegative);
             * pipeFilterGreyScale.Send(pic);*/


            // Parte 2

            /*
             * PipeNull pipeNull = new PipeNull();
             * PipeSerial pipeFilterSaveImageTwo = new PipeSerial(filterSaveImage, pipeNull);
             * PipeSerial pipeFilterNegative = new PipeSerial(filterNegative, pipeFilterSaveImageTwo);
             * PipeSerial pipeFilterSaveImageOne = new PipeSerial(filterSaveImage, pipeFilterNegative);
             * PipeSerial pipeFilterGreyScale = new PipeSerial(filterGreyscale, pipeFilterSaveImageOne);
             * pipeFilterGreyScale.Send(pic);*/

            // Parte 3

            /*
             * PipeNull pipeNull = new PipeNull();
             * PipeSerial pipeTwitterApiTwo = new PipeSerial(filterTwitterApi, pipeNull);
             * PipeSerial pipeFilterSaveImageTwo = new PipeSerial(filterSaveImage, pipeTwitterApiTwo);
             * PipeSerial pipeFilterNegative = new PipeSerial(filterNegative, pipeFilterSaveImageTwo);
             * PipeSerial pipeTwitterApi = new PipeSerial(filterTwitterApi, pipeFilterNegative);
             * PipeSerial pipeFilterSaveImageOne = new PipeSerial(filterSaveImage, pipeTwitterApi);
             * PipeSerial pipeFilterGreyScale = new PipeSerial(filterGreyscale, pipeFilterSaveImageOne);
             * pipeFilterGreyScale.Send(pic);*/


            // Parte 4.

            /*
             * PipeNull pipeNull = new PipeNull();
             * PipeSerial pipeFilterSaveImageTwo = new PipeSerial(filterSaveImage, pipeNull);
             * PipeSerial pipeFilterNegative = new PipeSerial(filterNegative, pipeFilterSaveImageTwo);
             * PipeSerial pipeTwitterApi = new PipeSerial(filterTwitterApi, pipeNull);
             * PipeFork pipeConditionalFork = new PipeFork(pipeFilterNegative, pipeTwitterApi);
             * PipeSerial pipeFilterHasFace = new PipeSerial(filterHasFace, pipeConditionalFork);
             * PipeSerial pipeFilterSaveImageOne = new PipeSerial(filterSaveImage, pipeFilterHasFace);
             * PipeSerial pipeFilterGreyScale = new PipeSerial(filterGreyscale, pipeFilterSaveImageOne);
             * pipeFilterGreyScale.Send(pic);*/



            pic = p.GetPicture(@"Imagen2.jpg");

            //Filtro FilterBlackAndWhite
            PipeNull         pipeNull             = new PipeNull();
            FilterSaveImage2 filterSaveImage2     = new FilterSaveImage2();
            PipeSerial       pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterBlackAndWhite filterBAndW     = new FilterBlackAndWhite(20);
            PipeSerial          pipeFilterBAndW = new PipeSerial(filterBAndW, pipeFilterSaveImage2);

            pipeFilterBAndW.Send(pic.Clone());

            //Filtro FilterClearOut
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterClearOut filterClearOut     = new FilterClearOut();
            PipeSerial     pipeFilterClearOut = new PipeSerial(filterClearOut, pipeFilterSaveImage2);

            pipeFilterClearOut.Send(pic.Clone());

            //Filtro FilterColoredLines
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterColoredLines filterColoredLines     = new FilterColoredLines();
            PipeSerial         pipeFilterColoredLines = new PipeSerial(filterColoredLines, pipeFilterSaveImage2);

            pipeFilterColoredLines.Send(pic.Clone());


            //Filtro FilterDarken
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterDarken filterDarken     = new FilterDarken();
            PipeSerial   pipeFilterDarken = new PipeSerial(filterDarken, pipeFilterSaveImage2);

            pipeFilterDarken.Send(pic.Clone());

            //Filtro FilterNeon
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterNeon filterNeon     = new FilterNeon();
            PipeSerial pipeFilterNeon = new PipeSerial(filterNeon, pipeFilterSaveImage2);

            pipeFilterNeon.Send(pic.Clone());

            //Filtro FilterPencil
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterPencil filterPencil     = new FilterPencil();
            PipeSerial   pipeFilterPencil = new PipeSerial(filterPencil, pipeFilterSaveImage2);

            pipeFilterPencil.Send(pic.Clone());

            //Filtro FilterRelief
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterRelief filterRelief     = new FilterRelief();
            PipeSerial   pipeFilterRelief = new PipeSerial(filterRelief, pipeFilterSaveImage2);

            pipeFilterRelief.Send(pic.Clone());


            //Filtro FilterGreyScale
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterGreyscale filterGreyScale     = new FilterGreyscale();
            PipeSerial      pipeFilterGreyscale = new PipeSerial(filterGreyScale, pipeFilterSaveImage2);

            pipeFilterGreyscale.Send(pic.Clone());


            //Filtro BlurConvolution
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterBlurConvolution filterBlurConvolution     = new FilterBlurConvolution();
            PipeSerial            pipeFilterBlurConvolution = new PipeSerial(filterBlurConvolution, pipeFilterSaveImage2);

            pipeFilterBlurConvolution.Send(pic.Clone());
        }