Exemple #1
0
        public static Image <Pixel32> ColorAccent(this Image <Pixel32> image, double hue, double hueRange)
        {
            var h1 = (hue - hueRange / 2d + 360d) % 360d;
            var h2 = (hue + hueRange / 2d + 360d) % 360d;

            image.ForEach((x, y) =>
            {
                var pixel    = image.Get(x, y);
                var pixelHue = pixel.ToHSV().H;

                bool toGrayscale = false;
                if (h1 <= h2)
                {
                    if (pixelHue < h1 || pixelHue > h2)
                    {
                        toGrayscale = true;
                    }
                }
                else
                {
                    if (pixelHue < h1 && pixelHue > h2)
                    {
                        toGrayscale = true;
                    }
                }

                if (toGrayscale)
                {
                    var grayscale = GrayscaleExtension.Luminance(pixel);
                    image.Set(x, y, new Pixel32(pixel.A, grayscale));
                }
            });
            return(image);
        }
        public static Image <Pixel32> BlackAndWhite(this Image <Pixel32> image, byte threshold = 127)
        {
            Pixel32 pixelOperator(Pixel32 pixel)
            {
                var grayscale = GrayscaleExtension.Luminance(pixel);

                if (grayscale > threshold)
                {
                    return(new Pixel32(pixel.A, 255));
                }
                else
                {
                    return(new Pixel32(pixel.A, 0));
                }
            };
            return(image.BlackAndWhite(pixelOperator));
        }
        public Pixel8 ToPixel8()
        {
            var gs = GrayscaleExtension.Luminance(this);

            return(new Pixel8(gs));
        }
        public Pixel1 ToPixel1()
        {
            var gs = GrayscaleExtension.Luminance(this);

            return(new Pixel1(gs > 127));
        }