/// <summary> /// fais un tableau de couleur /// </summary> public void colortab() // creer un tableau des couleurs d'une image en fonction de la position { TableauDeCouleur = new couleur[Height, Width]; int index = entete + entetebis; for (int j = 0; j < Height; j++) { for (int i = 0; i < Width; i++) { TableauDeCouleur[j, i] = new couleur(Tableau_de_Byte[index], Tableau_de_Byte[index + 1], Tableau_de_Byte[index + 2]); //TableauDeCouleur[j,i].Display(); index = index + 3; } } }
/// <summary> /// applique un effet en utilisant une matrice de convolution /// </summary> /// <param name="mat"></param> public void matrice_de_conv(int[,] mat) { if (mat.GetLength(0) != 5 || mat.GetLength(1) != 5) { } else { couleur[,] tableauDeCouleurBis = new couleur[TableauDeCouleur.GetLength(0), TableauDeCouleur.GetLength(1)]; for (int i = 0; i < Width; i++) { for (int j = 0; j < Height; j++) { int resultat_de_lapplication_mat_r = 0; int resultat_de_lapplication_mat_v = 0; int resultat_de_lapplication_mat_b = 0; tableauDeCouleurBis[i, j] = new couleur(0, 0, 0); int compteur = 0; for (int h = 0; h < mat.GetLength(1); h++) { for (int k = 0; k < mat.GetLength(0); k++) { if (mat[h, k] != 0) { resultat_de_lapplication_mat_r += mat[h, k] * TableauDeCouleur[i, j].rouge; resultat_de_lapplication_mat_v += mat[h, k] * TableauDeCouleur[i, j].vert; compteur++; resultat_de_lapplication_mat_b += mat[h, k] * TableauDeCouleur[i, j].bleu; } } } byte resultat_de_lapplication_mat_r2 = conversion_binaire(resultat_de_lapplication_mat_r / compteur); byte resultat_de_lapplication_mat_v2 = conversion_binaire(resultat_de_lapplication_mat_v / compteur); byte resultat_de_lapplication_mat_b2 = conversion_binaire(resultat_de_lapplication_mat_b / compteur); tableauDeCouleurBis[i, j] = new couleur(resultat_de_lapplication_mat_r2, resultat_de_lapplication_mat_v2, resultat_de_lapplication_mat_b2); } } TableauDeCouleur = tableauDeCouleurBis; } }
public Bitmap(string chemin) { Tableau_de_Byte = System.IO.File.ReadAllBytes(@chemin); Height = recuperer_taille(Tableau_de_Byte, entete + 8); Width = recuperer_taille(Tableau_de_Byte, entete + 4); colortab(); Byte[] tab2 = Tableau_de_Byte; Tableau_de_Byte = null; Tableau_de_Byte = new Byte[entete + entetebis]; for (int i = 0; i < entete + entetebis; i++) { Tableau_de_Byte[i] = tab2[i]; } couleur[,] tableauDeCouleur = new couleur[Height, Width]; }
public Bitmap() { Tableau_de_Byte = new byte[54]; int hauteur = 1; int largeur = 1; do { Console.WriteLine("veuillez entrer une longeur multiple de 4"); hauteur = Int32.Parse(Console.ReadLine()); Console.WriteLine("veuillez entrer une largeur multiple de 4"); largeur = Int32.Parse(Console.ReadLine()); } while (hauteur % 4 != 0 || largeur % 4 != 0); header(hauteur, largeur); Console.WriteLine("voulez vous:\n 1-un fond aléatoire\n 2-un fond unis que vous definirez"); int choix = Int32.Parse(Console.ReadLine()); couleur[,] tableauDeCouleur = new couleur[hauteur, largeur]; if (choix == 1) { Random rnd = new Random(); for (int i = 0; i < hauteur; i++) { for (int j = 0; j < largeur; j++) { int Rb = rnd.Next(0, 255); int Gb = rnd.Next(0, 255); int Bb = rnd.Next(0, 255); TableauDeCouleur[i, j] = new couleur(conversion_binaire(Bb), conversion_binaire(Gb), conversion_binaire(Rb)); } } } if (choix == 2) { int R = -1; int B = -1; int G = -1; Console.WriteLine(" de quelle couleur doit etre le fond"); do { Console.WriteLine("entrez la valeur de la couleur rouge, entre 0 et 255"); R = Int32.Parse(Console.ReadLine()); } while (R < 0 || R > 255); do { Console.WriteLine("entrez la valeur de la couleur verte, entre 0 et 255"); G = Int32.Parse(Console.ReadLine()); } while (R < 0 || R > 255); do { Console.WriteLine("entrez la valeur de la couleur bleu, entre 0 et 255"); B = Int32.Parse(Console.ReadLine()); } while (R < 0 || R > 255); for (int i = 0; i < hauteur; i++) { for (int j = 0; j < largeur; j++) { tableauDeCouleur[i, j] = new couleur(conversion_binaire(B), conversion_binaire(G), conversion_binaire(R)); } } } TableauDeCouleur = tableauDeCouleur; Height = hauteur; Width = largeur; }