/// <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); } } } }
/// <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); }
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(); }