Beispiel #1
0
        public static void Negative()
        {
            Bitmap result = new Bitmap(bmpImg.Width, bmpImg.Height);
            Color  cr     = new Color();

            for (int stPix = 0; stPix < 5; stPix++)
            {
                for (int i = 0; i < bmpImg.Width; ++i)
                {
                    for (int j = stPix; j < bmpImg.Height; j += 5)
                    {
                        cr = bmpImg.GetPixel(i, j);

                        result.SetPixel(i, j, Color.FromArgb(255 - cr.R, 255 - cr.G, 255 - cr.B));
                    }
                }
                mainWindow.Dispatcher.Invoke(() =>
                {
                    mainWindow.imageDisplay.Source = Bitmap2BitmapImage(result);
                });
            }
            mainWindow.Dispatcher.Invoke(() =>
            {
                GistogramColor.showGistagrams(result);
            });
        }
Beispiel #2
0
        public static void BlachAndWhite()
        {
            int P = 0;

            mainWindow.Dispatcher.Invoke(() =>
            {
                P = (int)mainWindow.Slider1.Value;
            });
            Bitmap result = new Bitmap(bmpImg.Width, bmpImg.Height);
            Color  color  = new Color();

            for (int stPix = 0; stPix < 5; stPix++)
            {
                for (int j = 0; j < bmpImg.Height; j++)
                {
                    for (int i = stPix; i < bmpImg.Width; i += 5)
                    {
                        color = bmpImg.GetPixel(i, j);
                        int K = (color.R + color.G + color.B) / 3;
                        result.SetPixel(i, j, K <= P ? Color.Black : Color.White);
                    }
                }

                mainWindow.Dispatcher.Invoke(() =>
                {
                    mainWindow.imageDisplay.Source = Bitmap2BitmapImage(result);
                });
            }
            mainWindow.Dispatcher.Invoke(() =>
            {
                GistogramColor.showGistagrams(result);
            });
        }
Beispiel #3
0
        //Отобразить изображение на форме
        public BitmapImage showImage()
        {
            BitmapImage img = new BitmapImage();

            img.BeginInit();
            img.UriSource   = new Uri("ram.jpg", UriKind.Relative);
            img.CacheOption = BitmapCacheOption.OnLoad;
            img.EndInit();
            GistogramColor.showGistagrams(img);
            imageDisplay.Width  = 1500;
            imageDisplay.Source = img;
            return(img);
        }
Beispiel #4
0
        public static void loadBrightness()
        {
            calceMidleCenelRGB();

            mainWindow.Dispatcher.Invoke(() =>
            {
                mainWindow.Slider1.Value = R;
                mainWindow.Slider2.Value = G;
                mainWindow.Slider3.Value = B;
                GistogramColor.showGistagrams(bmpImg);
            });
            prevSlider1 = R;
            prevSlider2 = G;
            prevSlider3 = B;
        }
Beispiel #5
0
        public static void ColorEqualizer()
        {
            Bitmap result          = new Bitmap(bmpImg.Width, bmpImg.Height);
            Color  cr              = new Color();
            int    newValueSlider1 = 0;
            int    newValueSlider2 = 0;
            int    newValueSlider3 = 0;

            mainWindow.Dispatcher.Invoke(() =>
            {
                newValueSlider1 = (int)mainWindow.Slider1.Value;
                newValueSlider2 = (int)mainWindow.Slider2.Value;
                newValueSlider3 = (int)mainWindow.Slider3.Value;
            });

            for (int stPix = 0; stPix < 5; stPix++)
            {
                for (int i = 0; i < bmpImg.Width; ++i)
                {
                    for (int j = stPix; j < bmpImg.Height; j += 5)
                    {
                        cr = bmpImg.GetPixel(i, j);

                        int red = cr.R;
                        red += newValueSlider1 - prevSlider1;

                        if (red > 255)
                        {
                            red = 255;
                        }
                        else if (red < 0)
                        {
                            red = 0;
                        }

                        int green = cr.G;
                        green += newValueSlider2 - prevSlider2;

                        if (green > 255)
                        {
                            green = 255;
                        }
                        else if (green < 0)
                        {
                            green = 0;
                        }

                        int blue = cr.B;
                        blue += newValueSlider3 - prevSlider3;

                        if (blue > 255)
                        {
                            blue = 255;
                        }
                        else if (blue < 0)
                        {
                            blue = 0;
                        }
                        result.SetPixel(i, j, Color.FromArgb(red, green, blue));
                    }
                }
                mainWindow.Dispatcher.Invoke(() =>
                {
                    mainWindow.imageDisplay.Source = Bitmap2BitmapImage(result);
                });
            }
            mainWindow.Dispatcher.Invoke(() =>
            {
                GistogramColor.showGistagrams(result);
            });
        }
Beispiel #6
0
        public static void Contrast()
        {
            Bitmap result          = new Bitmap(bmpImg.Width, bmpImg.Height);
            Color  cr              = new Color();
            double newValueSlider1 = 0;

            mainWindow.Dispatcher.Invoke(() =>
            {
                newValueSlider1 = mainWindow.Slider1.Value;
            });

            for (int stPix = 0; stPix < 5; stPix++)
            {
                for (int i = 0; i < bmpImg.Width; ++i)
                {
                    for (int j = stPix; j < bmpImg.Height; j += 5)
                    {
                        cr = bmpImg.GetPixel(i, j);

                        int red = cr.R;
                        red = (int)(newValueSlider1 * (red - R) + R);

                        if (red > 255)
                        {
                            red = 255;
                        }
                        else if (red < 0)
                        {
                            red = 0;
                        }

                        int green = cr.G;
                        green = (int)(newValueSlider1 * (green - G) + G);

                        if (green > 255)
                        {
                            green = 255;
                        }
                        else if (green < 0)
                        {
                            green = 0;
                        }

                        int blue = cr.B;
                        blue = (int)(newValueSlider1 * (blue - B) + B);

                        if (blue > 255)
                        {
                            blue = 255;
                        }
                        else if (blue < 0)
                        {
                            blue = 0;
                        }
                        result.SetPixel(i, j, Color.FromArgb(red, green, blue));
                    }
                }
                mainWindow.Dispatcher.Invoke(() =>
                {
                    mainWindow.imageDisplay.Source = Bitmap2BitmapImage(result);
                });
            }
            mainWindow.Dispatcher.Invoke(() =>
            {
                GistogramColor.showGistagrams(result);
            });
        }