/// <summary> /// Encodes message into an image using the MessageArray and the ImageBMP properties as inputs. /// </summary> public void InsertMessage() { //int[] colorArr = GetArrayOfColors(); int count = 0; int[] mess = ToOneDemArray(MessageArray); for (int x = 0; x < ImageBMP.Width; x++) { for (int y = 0; y < ImageBMP.Height; y++) { Color pixelColor = ImageBMP.GetPixel(x, y); Color newColor = MakeSpaceInPixel(pixelColor); int red, green, blue; if (count < mess.Length) { red = newColor.R + mess[count]; } else { red = newColor.R; } count++; if (count < mess.Length) { green = newColor.G + mess[count]; } else { green = newColor.G; } count++; if (count < mess.Length) { blue = newColor.B + mess[count]; } else { blue = newColor.B; } count++; newColor = Color.FromArgb(red, green, blue); ImageBMP.SetPixel(x, y, newColor); } } }
/// <summary> /// Decodes message in image using the ImageBMP. /// </summary> public void ExtractMessage() { List <int> messNums = new List <int>(); for (int x = 0; x < ImageBMP.Width; x++) { for (int y = 0; y < ImageBMP.Height; y++) { Color pixelColor = ImageBMP.GetPixel(x, y); messNums.Add(BitBlock.GetMod(pixelColor.R, BlockSize)); messNums.Add(BitBlock.GetMod(pixelColor.G, BlockSize)); messNums.Add(BitBlock.GetMod(pixelColor.B, BlockSize)); } } MessageArray = ToTwoDemArray(messNums.ToArray()); string temp = BitBlock.BinaryToMessage(MessageArray, BlockSize); Message = temp; }
private int[] GetArrayOfColors() { List <Color> pixelList = new List <Color>(); List <int> colorList = new List <int>(); for (int x = 0; x < ImageBMP.Width; x++) { //Gets X coordinate for (int y = 0; y < ImageBMP.Height; y++) { pixelList.Add(ImageBMP.GetPixel(x, y)); } } foreach (Color pixel in pixelList) { colorList.Add(pixel.R); colorList.Add(pixel.G); colorList.Add(pixel.B); } return(colorList.ToArray()); }