Exemplo n.º 1
0
        static void Main(string[] args)
        {
            bool fin = true;

            while (fin)
            {
                Console.WriteLine("\n\n           Menu"
                                  + "\n\n 1/ Charger un fichier"
                                  + "\n 2/ Utiliser coco"
                                  + "\n 3/ Créer un Fractale"
                                  + "\n 4/ Générer un QrCode"
                                  + "\n 5/ Exit");

                Console.Write("\n Entrez le programme souhaité  > ");
                int    choix  = Convert.ToInt32(Console.ReadLine());
                string chemin = "";
                if (choix == 1)
                {
                    Console.Write("\n\n Entrez le chemin du fichier souhaité > ");
                    chemin = Console.ReadLine();
                }
                else if (choix == 2)
                {
                    chemin = "coco.bmp";
                }
                switch (choix)
                {
                case 1:
                case 2:
                    bool    fin2  = true;
                    MyImage image = new MyImage(chemin);
                    while (fin2)
                    {
                        Console.WriteLine("\n\n        Menu Image"
                                          + "\n\n 1/ Sauvegarder le fichier fichier"
                                          + "\n 2/ Convertir en Noir et blanc"
                                          + "\n 3/ Agrandire l'image"
                                          + "\n 4/ Réduire l'image"
                                          + "\n 5/ Effet Miroir"
                                          + "\n 6/ Rotation"
                                          + "\n 7/ Flouter"
                                          + "\n 8/ Detection des bords"
                                          + "\n 9/ Renforcement des bords"
                                          + "\n 10/ Repoussage des bords"
                                          + "\n 11/ Créer l'histogramme"
                                          + "\n 12/ Cacher une image dans une image"
                                          + "\n 13/ Décoder une image"
                                          + "\n 14/ Innovation"
                                          + "\n 15/ Exit");

                        Console.Write("\n Entrez le programme souhaité  > ");
                        int choix2 = Convert.ToInt32(Console.ReadLine());
                        switch (choix2)
                        {
                        case 1:
                            Console.Write("\n\n Entrez le chemin souhaitée pour sauvegarder la fractale (n'oubliez pas le '.bmp') > ");
                            chemin = Console.ReadLine();
                            image.From_Image_To_File(chemin);
                            Console.WriteLine("\n\n fichier enregistré");
                            break;

                        case 2:
                            image.ConvertToGris();
                            Console.WriteLine("\n\n image convertie en nuance de gris");
                            break;

                        case 3:
                            Console.Write("\n\n Entrez le facteur d'agrandissement > ");
                            int fact = Convert.ToInt32(Console.ReadLine());
                            image.Agrandissement(fact);
                            Console.WriteLine("\n\n Image Agrandie");
                            break;

                        case 4:
                            Console.Write("\n\n Entrez le facteur de réduction > ");
                            fact = Convert.ToInt32(Console.ReadLine());
                            image.Agrandissement(fact);
                            Console.WriteLine("\n\n Image Agrandie");
                            break;

                        case 5:
                            Console.Write("\n\n Entrez H pour un miroir horizontal et V pour un miroir Vertical > ");
                            char caract = char.ToUpper(Convert.ToChar(Console.ReadLine()));
                            image.Miroir(caract);
                            Console.WriteLine("\n\n Effet Appliqué");
                            break;

                        case 6:
                            Console.Write("\n\n Entrez le'angle de rotation > ");
                            fact = Convert.ToInt32(Console.ReadLine());
                            image.Rotation(fact);
                            Console.WriteLine("\n\n Rotation effectuée");
                            break;

                        case 7:
                            image.Flou();
                            Console.WriteLine("\n\n Effet Appliqué");
                            break;

                        case 8:
                            image.DetecBord();
                            Console.WriteLine("\n\n Effet Appliqué");
                            break;

                        case 9:
                            image.RenfocementBords();
                            Console.WriteLine("\n\n Effet Appliqué");
                            break;

                        case 10:
                            image.Repoussage();
                            Console.WriteLine("\n\n Effet Appliqué");
                            break;

                        case 11:
                            Console.Write("\n\n Entrez le chemin souhaitée pour sauvegarder l'histogramme (n'oubliez pas le '.bmp') > ");
                            chemin = Console.ReadLine();
                            image.Histogramme();
                            image.From_Image_To_File(chemin);
                            break;

                        case 12:
                            Console.Write("\n\n Entrez le chemin de l'image à cacher > ");
                            chemin = Console.ReadLine();
                            image.ImageDansImage(chemin);
                            Console.WriteLine("\n\n Image cachée");
                            break;

                        case 13:
                            image.Décodage();
                            Console.WriteLine("\n\n Image décodée");
                            break;

                        case 14:
                            Console.WriteLine("\n\n Cette innovation est un ajustement automatique de la luminosité \n le programme va chercher à avoir une luminosité moyenne en changeant de la meme facon la luminosté de tous les pixels \n Attention : cela ne marchera pas (ou mal) sur les images avec de forts changement de luminosité ou sur des images extremement sombre ou claire");
                            image.amelioration();
                            Console.WriteLine("\n\n Image améliorée");
                            break;

                        case 15:
                            fin2 = false;
                            break;
                        }
                    }
                    break;

                case 3:
                    Console.Write("\n\n Entrez la largeur souhaitée pour la fractale > ");
                    int large = Convert.ToInt32(Console.ReadLine());
                    Console.Write("\n\n Entrez la hauteur souhaitée pour la fractale > ");
                    int     haut  = Convert.ToInt32(Console.ReadLine());
                    MyImage fract = new MyImage(large, haut);
                    Console.Write("\n\n Entrez le chemin souhaitée pour sauvegarder la fractale (n'oubliez pas le '.bmp') > ");
                    chemin = Console.ReadLine();
                    fract.From_Image_To_File(chemin);
                    break;

                case 4:
                    Console.Write("\n\n Entre le message que vous voulez coder dans le QRcode > ");
                    string message = Console.ReadLine();
                    Qrcode qr      = new Qrcode(message);
                    if (qr.Version != 0)
                    {
                        Console.Write("\n\n Entrez le chemin souhaitée pour sauvegarder le QRcode (n'oubliez pas le '.bmp') > ");
                        chemin = Console.ReadLine();
                        qr.generation(chemin);
                    }
                    break;

                case 5:
                    fin = false;
                    break;
                }
            }
        }
Exemplo n.º 2
0
        public void generation(string nom)
        {
            switch (this.version)
            {
            case (1):
                Pixel[,] code = new Pixel[21, 21];
                //tracage de tous les separateurs
                for (int i = 0; i < 7; i++)
                {
                    code[i, 0]      = new Pixel((byte)0, (byte)0, (byte)0);
                    code[0, i]      = new Pixel((byte)0, (byte)0, (byte)0);
                    code[6, i]      = new Pixel((byte)0, (byte)0, (byte)0);
                    code[i, 6]      = new Pixel((byte)0, (byte)0, (byte)0);
                    code[20 - i, 0] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[20, i]     = new Pixel((byte)0, (byte)0, (byte)0);
                    code[14, i]     = new Pixel((byte)0, (byte)0, (byte)0);
                    code[20 - i, 6] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[i, 20]     = new Pixel((byte)0, (byte)0, (byte)0);
                    code[0, 20 - i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[6, 20 - i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[i, 14]     = new Pixel((byte)0, (byte)0, (byte)0);
                }
                for (int i = 0; i < 5; i++)
                {
                    code[1 + i, 1]  = new Pixel((byte)255, (byte)255, (byte)255);
                    code[1, 1 + i]  = new Pixel((byte)255, (byte)255, (byte)255);
                    code[5, 1 + i]  = new Pixel((byte)255, (byte)255, (byte)255);
                    code[1 + i, 5]  = new Pixel((byte)255, (byte)255, (byte)255);
                    code[19 - i, 1] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[19, 1 + i] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[15, 1 + i] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[19 - i, 5] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[1 + i, 19] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[1, 19 - i] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[5, 19 - i] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[1 + i, 15] = new Pixel((byte)255, (byte)255, (byte)255);
                }
                for (int i = 0; i < 3; i++)
                {
                    code[2 + i, 2]  = new Pixel((byte)0, (byte)0, (byte)0);
                    code[2, 2 + i]  = new Pixel((byte)0, (byte)0, (byte)0);
                    code[4, 2 + i]  = new Pixel((byte)0, (byte)0, (byte)0);
                    code[2 + i, 4]  = new Pixel((byte)0, (byte)0, (byte)0);
                    code[18 - i, 2] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[18, 2 + i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[16, 2 + i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[18 - i, 4] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[2 + i, 18] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[2, 18 - i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[4, 18 - i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[2 + i, 16] = new Pixel((byte)0, (byte)0, (byte)0);
                }
                code[3, 3]  = new Pixel((byte)0, (byte)0, (byte)0);
                code[17, 3] = new Pixel((byte)0, (byte)0, (byte)0);
                code[3, 17] = new Pixel((byte)0, (byte)0, (byte)0);

                //patern de séparation
                for (int i = 0; i < 8; i++)
                {
                    code[7, i]      = new Pixel((byte)255, (byte)255, (byte)255);
                    code[i, 7]      = new Pixel((byte)255, (byte)255, (byte)255);
                    code[13, i]     = new Pixel((byte)255, (byte)255, (byte)255);
                    code[20 - i, 7] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[i, 13]     = new Pixel((byte)255, (byte)255, (byte)255);
                    code[7, 20 - i] = new Pixel((byte)255, (byte)255, (byte)255);
                }

                //motifs de synchronisation
                for (int i = 8; i < 13; i++)
                {
                    if (i % 2 == 0)
                    {
                        code[i, 6] = new Pixel((byte)0, (byte)0, (byte)0);
                        code[6, i] = new Pixel((byte)0, (byte)0, (byte)0);
                    }
                    else
                    {
                        code[6, i] = new Pixel((byte)255, (byte)255, (byte)255);
                        code[i, 6] = new Pixel((byte)255, (byte)255, (byte)255);
                    }
                }

                //implantation du masque
                for (int i = 0; i < 15; i++)
                {
                    if (masque[i] == '1')
                    {
                        if (i < 6)
                        {
                            code[8, i] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                        else if (i < 8)
                        {
                            code[8, 1 + i] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                        else if (i == 8)
                        {
                            code[7, 8] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                        else
                        {
                            code[14 - i, 8] = new Pixel((byte)0, (byte)0, (byte)0);
                        };
                        if (i < 7)
                        {
                            code[20 - i, 8] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                        else
                        {
                            code[8, 6 + i] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                    }
                    else
                    {
                        if (i < 6)
                        {
                            code[8, i] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                        else if (i < 8)
                        {
                            code[8, 1 + i] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                        else if (i == 8)
                        {
                            code[7, 8] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                        else
                        {
                            code[14 - i, 8] = new Pixel((byte)255, (byte)255, (byte)255);
                        };
                        if (i < 7)
                        {
                            code[20 - i, 8] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                        else
                        {
                            code[8, 6 + i] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                    }
                }

                //dark module
                code[13, 8] = new Pixel((byte)0, (byte)0, (byte)0);

                //ecriture du code
                bool montee = true;
                int  index  = 0;
                for (int x = 20; x > 0; x -= 2)
                {
                    if (x == 6)
                    {
                        x--;
                    }
                    if (montee)
                    {
                        for (int y = 20; y >= 0; y--)
                        {
                            if (code[y, x] == null)
                            {
                                if (data[index] == (byte)0)
                                {
                                    code[y, x] = new Pixel((byte)255, (byte)255, (byte)255);
                                }
                                else
                                {
                                    code[y, x] = new Pixel((byte)0, (byte)0, (byte)0);
                                }
                                index++;
                            }
                            if (code[y, x - 1] == null)
                            {
                                if (data[index] == (byte)0)
                                {
                                    code[y, x - 1] = new Pixel((byte)255, (byte)255, (byte)255);
                                }
                                else
                                {
                                    code[y, x - 1] = new Pixel((byte)0, (byte)0, (byte)0);
                                }
                                index++;
                            }
                        }
                        montee = false;
                    }
                    else
                    {
                        for (int y = 0; y < 21; y++)
                        {
                            if (code[y, x] == null)
                            {
                                if (data[index] == (byte)0)
                                {
                                    code[y, x] = new Pixel((byte)255, (byte)255, (byte)255);
                                }
                                else
                                {
                                    code[y, x] = new Pixel((byte)0, (byte)0, (byte)0);
                                }
                                index++;
                            }
                            if (code[y, x - 1] == null)
                            {
                                if (data[index] == (byte)0)
                                {
                                    code[y, x - 1] = new Pixel((byte)255, (byte)255, (byte)255);
                                }
                                else
                                {
                                    code[y, x - 1] = new Pixel((byte)0, (byte)0, (byte)0);
                                }
                                index++;
                            }
                        }
                        montee = true;
                    }
                }
                MyImage QR = new MyImage(21, code);
                QR.Agrandissement(4);
                QR.Miroir('V');
                QR.From_Image_To_File(nom);
                break;

            case (2):
                code = new Pixel[25, 25];
                //tracage de tous les separateurs
                for (int i = 0; i < 7; i++)
                {
                    code[i, 0]      = new Pixel((byte)0, (byte)0, (byte)0);
                    code[0, i]      = new Pixel((byte)0, (byte)0, (byte)0);
                    code[6, i]      = new Pixel((byte)0, (byte)0, (byte)0);
                    code[i, 6]      = new Pixel((byte)0, (byte)0, (byte)0);
                    code[24 - i, 0] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[24, i]     = new Pixel((byte)0, (byte)0, (byte)0);
                    code[18, i]     = new Pixel((byte)0, (byte)0, (byte)0);
                    code[24 - i, 6] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[i, 24]     = new Pixel((byte)0, (byte)0, (byte)0);
                    code[0, 24 - i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[6, 24 - i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[i, 18]     = new Pixel((byte)0, (byte)0, (byte)0);
                }
                for (int i = 0; i < 5; i++)
                {
                    code[1 + i, 1]  = new Pixel((byte)255, (byte)255, (byte)255);
                    code[1, 1 + i]  = new Pixel((byte)255, (byte)255, (byte)255);
                    code[5, 1 + i]  = new Pixel((byte)255, (byte)255, (byte)255);
                    code[1 + i, 5]  = new Pixel((byte)255, (byte)255, (byte)255);
                    code[23 - i, 1] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[23, 1 + i] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[19, 1 + i] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[23 - i, 5] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[1 + i, 23] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[1, 23 - i] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[5, 23 - i] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[1 + i, 19] = new Pixel((byte)255, (byte)255, (byte)255);
                }
                for (int i = 0; i < 3; i++)
                {
                    code[2 + i, 2]  = new Pixel((byte)0, (byte)0, (byte)0);
                    code[2, 2 + i]  = new Pixel((byte)0, (byte)0, (byte)0);
                    code[4, 2 + i]  = new Pixel((byte)0, (byte)0, (byte)0);
                    code[2 + i, 4]  = new Pixel((byte)0, (byte)0, (byte)0);
                    code[22 - i, 2] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[22, 2 + i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[20, 2 + i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[22 - i, 4] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[2 + i, 22] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[2, 22 - i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[4, 22 - i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[2 + i, 20] = new Pixel((byte)0, (byte)0, (byte)0);
                }
                code[3, 3]  = new Pixel((byte)0, (byte)0, (byte)0);
                code[21, 3] = new Pixel((byte)0, (byte)0, (byte)0);
                code[3, 21] = new Pixel((byte)0, (byte)0, (byte)0);

                //patern de séparation
                for (int i = 0; i < 8; i++)
                {
                    code[7, i]      = new Pixel((byte)255, (byte)255, (byte)255);
                    code[i, 7]      = new Pixel((byte)255, (byte)255, (byte)255);
                    code[17, i]     = new Pixel((byte)255, (byte)255, (byte)255);
                    code[24 - i, 7] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[i, 13]     = new Pixel((byte)255, (byte)255, (byte)255);
                    code[7, 24 - i] = new Pixel((byte)255, (byte)255, (byte)255);
                }

                //motifs de synchronisation
                for (int i = 8; i < 17; i++)
                {
                    if (i % 2 == 0)
                    {
                        code[i, 6] = new Pixel((byte)0, (byte)0, (byte)0);
                        code[6, i] = new Pixel((byte)0, (byte)0, (byte)0);
                    }
                    else
                    {
                        code[6, i] = new Pixel((byte)255, (byte)255, (byte)255);
                        code[i, 6] = new Pixel((byte)255, (byte)255, (byte)255);
                    }
                }

                //implantation du masque
                for (int i = 0; i < 15; i++)
                {
                    if (masque[i] == '1')
                    {
                        if (i < 6)
                        {
                            code[8, i] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                        else if (i < 8)
                        {
                            code[8, 1 + i] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                        else if (i == 8)
                        {
                            code[7, 8] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                        else
                        {
                            code[14 - i, 8] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                        if (i < 7)
                        {
                            code[24 - i, 8] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                        else
                        {
                            code[8, 10 + i] = new Pixel((byte)0, (byte)0, (byte)0);
                        }
                    }
                    else
                    {
                        if (i < 6)
                        {
                            code[8, i] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                        else if (i < 8)
                        {
                            code[8, 1 + i] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                        else if (i == 8)
                        {
                            code[7, 8] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                        else
                        {
                            code[14 - i, 8] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                        if (i < 7)
                        {
                            code[24 - i, 8] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                        else
                        {
                            code[8, 10 + i] = new Pixel((byte)255, (byte)255, (byte)255);
                        }
                    }
                }

                //dark module
                code[8, 13] = new Pixel((byte)0, (byte)0, (byte)0);

                // module d'alignement
                for (int i = 0; i < 5; i++)
                {
                    code[16 + i, 16] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[16, 16 + i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[20, 16 + i] = new Pixel((byte)0, (byte)0, (byte)0);
                    code[16 + i, 20] = new Pixel((byte)0, (byte)0, (byte)0);
                }
                for (int i = 0; i < 3; i++)
                {
                    code[17 + i, 17] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[17, 17 + i] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[19, 17 + i] = new Pixel((byte)255, (byte)255, (byte)255);
                    code[17 + i, 19] = new Pixel((byte)255, (byte)255, (byte)255);
                }
                code[18, 18] = new Pixel((byte)0, (byte)0, (byte)0);

                //ecriture du code
                montee = true;
                index  = 0;
                for (int x = 24; x > 0; x -= 2)
                {
                    if (x == 6)
                    {
                        x--;
                    }
                    if (montee)
                    {
                        for (int y = 24; y >= 0; y--)
                        {
                            if (code[y, x] == null)
                            {
                                if (data[index] == (byte)0)
                                {
                                    code[y, x] = new Pixel((byte)255, (byte)255, (byte)255);
                                }
                                else
                                {
                                    code[y, x] = new Pixel((byte)0, (byte)0, (byte)0);
                                }
                                index++;
                            }
                            if (code[y, x - 1] == null)
                            {
                                if (data[index] == (byte)0)
                                {
                                    code[y, x - 1] = new Pixel((byte)255, (byte)255, (byte)255);
                                }
                                else
                                {
                                    code[y, x - 1] = new Pixel((byte)0, (byte)0, (byte)0);
                                }
                                index++;
                            }
                        }
                        montee = false;
                    }
                    else
                    {
                        for (int y = 0; y < 25; y++)
                        {
                            if (code[y, x] == null)
                            {
                                if (data[index] == (byte)0)
                                {
                                    code[y, x] = new Pixel((byte)255, (byte)255, (byte)255);
                                }
                                else
                                {
                                    code[y, x] = new Pixel((byte)0, (byte)0, (byte)0);
                                }
                                index++;
                            }
                            if (code[y, x - 1] == null)
                            {
                                if (data[index] == (byte)0)
                                {
                                    code[y, x - 1] = new Pixel((byte)255, (byte)255, (byte)255);
                                }
                                else
                                {
                                    code[y, x - 1] = new Pixel((byte)0, (byte)0, (byte)0);
                                }
                                index++;
                            }
                        }
                        montee = true;
                    }
                }
                QR = new MyImage(25, code);
                QR.Agrandissement(4);
                QR.Miroir('V');
                QR.From_Image_To_File(nom);
                break;
            }
        }