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");
            }
        }
Пример #3
0
        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;
                        }
                    }
                }
            }
        }
Пример #4
0
        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();
            }
        }