/// <summary> /// Encrypts the image embedding. /// </summary> /// <param name="pixels">The pixels.</param> /// <param name="sourcePicture">The source picture.</param> /// <param name="hiddenPicture">The hidden picture.</param> public static void EncryptImage(byte[] pixels, Picture sourcePicture, Picture hiddenPicture) { for (var i = 0; i < sourcePicture.Height; i++) { for (var j = 0; j < sourcePicture.Width; j++) { j = HeaderManager.SkipHeaderLocation(i, j); var sourcePixelColor = PixelUtilities.GetPixelBgra8(pixels, i, j, sourcePicture.Width, sourcePicture.Height); var hiddenPixelColor = Colors.White; hiddenPixelColor = getOppositeVerticalHalfPixelColor(i, j, hiddenPixelColor, sourcePicture, hiddenPicture); if (PixelUtilities.IsColorBlack(hiddenPixelColor)) { embedBlackPixel(pixels, sourcePixelColor, i, j, sourcePicture); } else { embedWhitePixel(pixels, sourcePixelColor, i, j, sourcePicture); } } } }
private void imageEmbedding(byte[] pixels) { for (var i = 0; i < this.hiddenPicture.Height; i++) { for (var j = 0; j < this.hiddenPicture.Width; j++) { j = HeaderManager.SkipHeaderLocation(i, j); this.embedPixel(pixels, i, j); } } }
private void updateSourceImage(IReadOnlyList <byte> bytes) { var index = 0; for (var i = 0; i < this.sourcePicture.Height; i++) { for (var j = 0; j < this.sourcePicture.Width; j++) { j = HeaderManager.SkipHeaderLocation(i, j); index = this.updatePixel(bytes, i, j, index); } } }
/// <summary> /// Extracts the image. /// </summary> /// <param name="pixels">The pixels.</param> public void ExtractImage(byte[] pixels) { for (var i = 0; i < this.sourcePicture.Height; i++) { for (var j = 0; j < this.sourcePicture.Width; j++) { j = HeaderManager.SkipHeaderLocation(i, j); var hiddenPixelColor = PixelUtilities.GetPixelBgra8(pixels, i, j, this.sourcePicture.Width, this.sourcePicture.Height); this.setPixelToMonochromeColor(pixels, hiddenPixelColor, i, j); } } }