private async void embedImageButton_OnClick(object sender, RoutedEventArgs e) { try { _imageResult = await ImageEmbedder.EmbedImage(_sourceImage, _embedImage, _sourceImageFile, _embedImageFile); EncryptedImage.Source = _imageResult; } catch (Exception) { await CustomDialog("Embedding failed try selecting new files or restarting the program."); } }
private async void extractImageButton_OnClick(object sender, RoutedEventArgs e) { try { var image = await ImageEmbedder.ExtractHiddenImage( ToWriteableBitmapConverter.ConvertToWriteableBitmap(ImageDisplay), _sourceImageFile); _imageResult = ToWriteableBitmapConverter.ConvertToWriteableBitmap(image); EncryptedImage.Source = _imageResult; await CustomDialog("Next, save the image to view the hidden message!"); } catch (Exception) { await CustomDialog("There are no secrets behind this image"); } }
private async Task embedImage(ImageEmbedder imageEmbedder) { var copyOriBitImageFile = await this.imageToEncript.MakeCopyOfImage(); var imageToAddCopy = await this.imageUsedToEncrypt.MakeCopyOfImage(); using (var toEncryptStream = await this.imageUsedToEncrypt.OpenAsync(FileAccessMode.Read)) { using (var fileStream = await this.imageToEncript.OpenAsync(FileAccessMode.Read)) { var decoder = await BitmapDecoder.CreateAsync(fileStream); var imageToUseDecoder = await BitmapDecoder.CreateAsync(toEncryptStream); var transform = new BitmapTransform { ScaledWidth = Convert.ToUInt32(copyOriBitImageFile.PixelWidth), ScaledHeight = Convert.ToUInt32(copyOriBitImageFile.PixelHeight) }; var imageToUseTransform = new BitmapTransform { ScaledWidth = Convert.ToUInt32(imageToAddCopy.PixelWidth), ScaledHeight = Convert.ToUInt32(imageToAddCopy.PixelHeight) }; this.dpiX = decoder.DpiX; this.dpiY = decoder.DpiY; var pixelData = await decoder.GetPixelDataAsync( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, transform, ExifOrientationMode.IgnoreExifOrientation, ColorManagementMode.DoNotColorManage ); var imageToUsePixelData = await imageToUseDecoder.GetPixelDataAsync( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, imageToUseTransform, ExifOrientationMode.IgnoreExifOrientation, ColorManagementMode.DoNotColorManage ); var sourceOriPixels = pixelData.DetachPixelData(); var sourceOfMono = imageToUsePixelData.DetachPixelData(); if (secretImageIsLargerThanSourceImage(imageToUseDecoder, decoder)) { this.sizeErrorMessage.Visibility = Visibility.Visible; } else { this.sizeErrorMessage.Visibility = Visibility.Collapsed; imageEmbedder.EmbedWholeImage(sourceOriPixels, decoder.PixelWidth, decoder.PixelHeight, sourceOfMono, imageToUseDecoder.PixelWidth, imageToUseDecoder.PixelHeight); if (this.encryptBox.IsChecked == true) { ImageEncrypter encrypter = new ImageEncrypter(); encrypter.EncryptImage(sourceOriPixels, decoder.PixelWidth, decoder.PixelHeight); } this.bitMapImage = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); using (var writeStream = this.bitMapImage.PixelBuffer.AsStream()) { await writeStream.WriteAsync(sourceOriPixels, 0, sourceOriPixels.Length); this.encrptedImage.Source = this.bitMapImage; } } } } }
private async void embedButton_Click(object sender, RoutedEventArgs e) { var imageEmbedder = new ImageEmbedder(); if (this.bitsToEncryptBox.SelectedItem == null) { this.bitsToEncryptBox.SelectedIndex = 0; } if (this.rotationBox.SelectedItem == null) { this.rotationBox.SelectedIndex = 0; } if (this.imageToEncript != null && this.imageUsedToEncrypt != null || this.imageToEncript != null && !this.textRead.Equals(string.Empty)) { if (this.textEncryptionRadio.IsEnabled == false) { await this.embedImage(imageEmbedder); } else { var copyOriBitImageFile = await this.imageToEncript.MakeCopyOfImage(); using (var fileStream = await this.imageToEncript.OpenAsync(FileAccessMode.Read)) { var decoder = await BitmapDecoder.CreateAsync(fileStream); var transform = new BitmapTransform { ScaledWidth = Convert.ToUInt32(copyOriBitImageFile.PixelWidth), ScaledHeight = Convert.ToUInt32(copyOriBitImageFile.PixelHeight) }; this.dpiX = decoder.DpiX; this.dpiY = decoder.DpiY; var pixelData = await decoder.GetPixelDataAsync( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, transform, ExifOrientationMode.IgnoreExifOrientation, ColorManagementMode.DoNotColorManage ); var sourceOriPixels = pixelData.DetachPixelData(); this.chooseWhichBitsToEmbed(sourceOriPixels, decoder.PixelWidth, decoder.PixelHeight); this.bitMapImage = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); using (var writeStream = this.bitMapImage.PixelBuffer.AsStream()) { await writeStream.WriteAsync(sourceOriPixels, 0, sourceOriPixels.Length); this.encrptedImage.Source = this.bitMapImage; } } } } else { var imageNeedToBeLoaded = new ContentDialog { Title = "SomeThing Needs Loading", Content = "A image needs to be loaded", CloseButtonText = "Ok" }; await imageNeedToBeLoaded.ShowAsync(); } }