예제 #1
0
        private void startExtractButton_Click(object sender, EventArgs e)
        {
            ISteganographyAlgorithm steganography = new LeastSignificantBit();
            Bitmap image;

            try
            {
                image = steganography.GetBitmap(ImagePath);
            }
            catch (Exception)
            {
                MessageBox.Show("Podaj poprawną ścieżkę do obrazu!", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (textOutputRadio.Checked)
            {
                outputDataRichTextBox.Text = steganography.ExtractText(image, Settings);
            }
            else
            {
                byte[] data = steganography.ExtractBytes(image, Settings);

                SaveFileDialog dialog = new SaveFileDialog();
                dialog.Title = "Zapisz odzyskane dane do pliku";

                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    File.WriteAllBytes(dialog.FileName, data);

                    Process.Start(dialog.FileName);
                }
            }
        }
예제 #2
0
        private void startButton_Click(object sender, EventArgs e)
        {
            ISteganographyAlgorithm steganography = new LeastSignificantBit();
            Bitmap image;
            Bitmap newImage;

            try
            {
                image = steganography.GetBitmap(ImagePath);
            }
            catch (Exception)
            {
                MessageBox.Show("Podaj poprawną ścieżkę do obrazu!", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (textInputRadio.Checked)
            {
                string message = inputDataRichTextBox.Text;

                if (String.IsNullOrEmpty(message))
                {
                    MessageBox.Show("Podaj tekst do ukrycia w obrazie!", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                if (BitmapConverter.CalculateOffset(Settings.OffsetX, Settings.OffsetY, image.Width, image.Height, Settings.Direction) + message.Length * 3
                    > image.Width * image.Height)
                {
                    MessageBox.Show("Podany tekst jest zbyt duży!", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                newImage = steganography.HideText(message, image, Settings);
            }
            else
            {
                byte[] data;

                try
                {
                    data = File.ReadAllBytes(DataFilePath);
                }
                catch (Exception)
                {
                    MessageBox.Show("Podaj poprawną ścieżkę do pliku!", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                if (BitmapConverter.CalculateOffset(Settings.OffsetX, Settings.OffsetY, image.Width, image.Height, Settings.Direction) + data.Length * 3
                    > image.Width * image.Height)
                {
                    MessageBox.Show("Podany tekst jest zbyt duży!", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                newImage = steganography.HideBytes(data, image, Settings);
            }

            SaveFileDialog dialog = new SaveFileDialog();

            dialog.Title      = "Zapisz nowy obraz i ustawienia algorytmu.";
            dialog.Filter     = "BMP Image (*.bmp)|*.bmp";
            dialog.DefaultExt = ".bmp";

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                newImage.Save(dialog.FileName, ImageFormat.Bmp);
                Settings.Save(dialog.FileName + ".json");

                Process.Start(dialog.FileName);
            }
        }