Ejemplo n.º 1
0
 private void BtnNegative_Click(object sender, EventArgs e)
 {
     manipulated         = ImageManipulations.MakeNegative(original);
     currentManipulation = "_negative";
     pbManipulated.Image = manipulated;
     manipulationMade    = true;
 }
Ejemplo n.º 2
0
        public void NegativeWorks()
        {
            // Color.Red skapar HEX8-koden FFFF0000 medan Color.FromArgb(255, 0, 0) skapar
            // HEX-koden FF0000. I manipulationsalgoritmerna använder jag Color.FromArgb() för att
            // sätta ihop uträkningarna av R, G och B till en färg. Därför måste jag
            // skapa färgerna nedan istället för att exempelvis använda Color.Red. Annars är koderna
            // inte jämförbara.

            Color red   = Color.FromArgb(255, 0, 0);
            Color green = Color.FromArgb(0, 255, 0);
            Color blue  = Color.FromArgb(0, 0, 255);
            Color white = Color.FromArgb(255, 255, 255);

            Color cyan    = Color.FromArgb(0, 255, 255);
            Color magenta = Color.FromArgb(255, 0, 255);
            Color yellow  = Color.FromArgb(255, 255, 0);
            Color black   = Color.FromArgb(0, 0, 0);

            Color[,] originalColors =
            {
                { red,  green },
                { blue, white }
            };

            Color[,] negativeColors =
            {
                { cyan,   magenta },
                { yellow, black   }
            };

            Bitmap original = CreateImage(2, 2, originalColors);
            Bitmap expected = CreateImage(2, 2, negativeColors);
            Bitmap actual   = ImageManipulations.MakeNegative(original);

            // Bilden består av 4 pixlar vardera, så nedan kollas varenda pixel av båda bilderna.
            bool check = expected.GetPixel(0, 0).Name == actual.GetPixel(0, 0).Name&&
                         expected.GetPixel(0, 1).Name == actual.GetPixel(0, 1).Name&&
                         expected.GetPixel(1, 0).Name == actual.GetPixel(1, 0).Name&&
                         expected.GetPixel(1, 1).Name == actual.GetPixel(1, 1).Name;

            Assert.IsTrue(check);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            string path = null;

            if (args.Length > 0)
            {
                path = args[0];
            }
            else
            {
                bool   retry        = false;
                string message      = "Please enter the path to your image: ";
                string retryMessage = "\nCould not find image, please try again: ";

                while (!File.Exists(path))
                {
                    Console.Write(retry ? retryMessage : message);
                    path  = Console.ReadLine();
                    retry = true;
                }
            }

            Console.WriteLine("Working...");

            Bitmap original;

            try
            {
                // Kolla om filen är en bildfil och tilldela isf den till "original"
                original = new Bitmap(path);
            }
            catch (ArgumentException)
            {
                Console.WriteLine("The file is not an acceptable format.");
                return;
            }

            if (original.Width >= 5000 || original.Height >= 5000)
            {
                Console.WriteLine("The image cannot be over 5000 pixels in height or width.");
                return;
            }

            Bitmap negative = ImageManipulations.MakeNegative(original);

            negative.Save(PathManipulations.EditFileName(path, "_negative"));
            Console.WriteLine("Negative saved");

            Bitmap gray = ImageManipulations.MakeGray(original);

            gray.Save(PathManipulations.EditFileName(path, "_grayscale"));
            Console.WriteLine("Grayscale saved");

            Bitmap blurry = ImageManipulations.MakeBlurry(original);

            blurry.Save(PathManipulations.EditFileName(path, "_blurred"));
            Console.WriteLine("The blurry image saved");

            // Om vi inte har anledning att misstänka att en server använder programmet,
            // så låt den eventuella användaren läsa eventuella meddelanden innan programmet avslutas.
            if (args.Length == 0)
            {
                Console.WriteLine("\nPress any key to exit...");
                Console.ReadKey();
            }
        }