예제 #1
0
        /// <summary>
        /// Constructeur de copie
        /// </summary>
        /// <param name="_image">MonImage à copier</param>
        /// <param name="HeaderSeulement">Header seulement ou non</param>
        public MonImage(MonImage _image, bool HeaderSeulement)
        {
            //On défini la taille des tableaux de byte
            this.Header     = new byte[_image.Header.Length];
            this.HeaderInfo = new byte[_image.HeaderInfo.Length];
            this.Pixel      = new PixelClass[_image.Pixel.GetLength(0), _image.Pixel.GetLength(1)];

            //On donne les même valeur à la MonImage de copie
            for (int i = 0; i < this.Header.Length; i++)
            {
                this.Header[i] = _image.Header[i];
            }
            for (int i = 0; i < this.HeaderInfo.Length; i++)
            {
                this.HeaderInfo[i] = _image.HeaderInfo[i];
            }
            //Sauf si on ne veut pas lui redonner aussi ses pixels (Pour gagner du temps d'execution)
            if (!HeaderSeulement)
            {
                for (int i = 0; i < this.Pixel.GetLength(0); i++)
                {
                    for (int j = 0; j < this.Pixel.GetLength(1); j++)
                    {
                        this.Pixel[i, j] = new PixelClass(_image.Pixel[i, j].R, _image.Pixel[i, j].G, _image.Pixel[i, j].B);
                    }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Constructeur d'image à partir de l'adresse du fichier
        /// </summary>
        /// <param name="path">Adresse du fichier</param>
        public MonImage(string path)
        {
            //On lit le fichier
            byte[] data = File.ReadAllBytes("C:\\Users\\Axel\\Documents\\Visual Studio 2015\\Projects\\ImageWpf\\ImageWpf\\bin\\Debug\\ImageTest.bmp");
            //Si le fichier est bien un Bitmap on peut l'utiliser
            if (data != null && data.Length > 1 && data[0] == 66 && data[1] == 77)
            {
                this.Header     = new byte[14];
                this.HeaderInfo = new byte[40];

                //Infos de l'image
                for (int i = 0; i < 14; i++)
                {
                    this.Header[i] = data[i];
                }
                for (int i = 14; i < 54; i++)
                {
                    this.HeaderInfo[i - 14] = data[i];
                }

                //Taille de l'image
                this.Pixel = new PixelClass[EndianToInt(new byte[] { data[18], data[19], data[20], data[21] }), EndianToInt(new byte[] { data[22], data[23], data[24], data[25] })];
                for (int i = 0; i < this.Pixel.GetLength(0); i++)
                {
                    //Pixels de l'image
                    for (int j = 0; j < this.Pixel.GetLength(1); j++)
                    {
                        this.Pixel[i, j] = new PixelClass(data[i * this.Pixel.GetLength(1) * 3 + j * 3 + 54],
                                                          data[i * this.Pixel.GetLength(1) * 3 + j * 3 + 55],
                                                          data[i * this.Pixel.GetLength(1) * 3 + j * 3 + 56]);
                    }
                }
            }
            this.Genese = new MonImage(this, false);
        }
예제 #3
0
        static void Main(string[] args)
        {
            string   nomFichier = "coco.bmp";
            MonImage image      = new MonImage(nomFichier);

            foreach (byte b in image.Header)
            {
                Console.Write(b + " ");
            }
            Console.WriteLine();
            foreach (byte b in image.HeaderInfo)
            {
                Console.Write(b + " ");
            }
            Console.WriteLine();
            image.Rotation();
            image.Sauvegarder("save.bmp");



            Process.Start("save.bmp");
            Console.ReadKey();
        }