|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.03.2015, 23:14 | #1 |
Пользователь
Регистрация: 09.03.2015
Сообщений: 10
|
EncoderParameters в BMP
ребят такой вопрос - написал программу - метод LBS стеганография, после того, как я подгрузил изображение в программу и зашифровал в него текст, сохраняю его. Но после сохранения изображения, увеличивается его размер до 4 Мб. Пробовал использовать различные изображения (24 битовые, 16 цветовые, 256 цветовые, 32 битовые ) после их модификации и сохранения они тоже становятся 4 Мб. Только 32 битовое изображение как было 4 Мб так и осталось. и собственно вопрос - как мене сохранить изображение используя начальные EncoderParameters, т.е чтобы объём картинки после преобразования не менялся?? если нужен код программы пишите)
Последний раз редактировалось Strachey; 10.03.2015 в 12:47. |
09.03.2015, 23:21 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Зачем писать? Сразу бы выложили код.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
09.03.2015, 23:28 | #3 |
Пользователь
Регистрация: 09.03.2015
Сообщений: 10
|
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging;ck(obj using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace crypto { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button4_Click(object sender, EventArgs e) { textBox2.Text = ""; textBox3.Text = ""; OpenFileDialog ofd1 = new OpenFileDialog(); if (ofd1.ShowDialog() == DialogResult.OK) { pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; pictureBox1.Image = Image.FromFile(ofd1.FileName); textBox1.Text = ofd1.FileName; } } private void button2_Click(object sender, EventArgs e) { Bitmap bmp1 = new Bitmap(pictureBox1.Image); SaveFileDialog sfd = new SaveFileDialog(); sfd.DefaultExt = "bmp"; sfd.Filter = "BitMap picture (*.bmp)|*.bmp"; if (sfd.ShowDialog() == DialogResult.OK) bmp1.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat. Bmp); } private void button1_Cliect sender, EventArgs e) { //РАБОТАЕМ С ДЛИНОЙ КЛЮЧА int LengthKey = textBox3.Text.Length; string LengthKeyDouble = Convert.ToString(LengthKey, 2); while (LengthKeyDouble.Length != 8) { LengthKeyDouble = "0" + LengthKeyDouble; } Color PixelColor; int k = 0; int l = 0; string KeyColor = ""; int ColorInt; Bitmap bmp1 = new Bitmap(pictureBox1.Image); while (l < 8) { PixelColor = bmp1.GetPixel(k, 0); KeyColor = Convert.ToString(PixelColor.R, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; KeyColor = KeyColor.Remove(7, 1); KeyColor = KeyColor + LengthKeyDouble.Substring(0, 1); LengthKeyDouble = LengthKeyDouble.Remove(0, 1); ColorInt = Convert.ToInt16(KeyColor, 2); bmp1.SetPixel(k, 0, Color.FromArgb(255, ColorInt, PixelColor.G, PixelColor.B)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 0); l++; if (l == 8) break; KeyColor = Convert.ToString(PixelColor.G, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; KeyColor = KeyColor.Remove(7, 1); KeyColor = KeyColor + LengthKeyDouble.Substring(0, 1); LengthKeyDouble = LengthKeyDouble.Remove(0, 1); ColorInt = Convert.ToInt16(KeyColor, 2); bmp1.SetPixel(k, 0, Color.FromArgb(255, PixelColor.R, ColorInt, PixelColor.B)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 0); l++; if (l == 8) break; KeyColor = Convert.ToString(PixelColor.B, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; KeyColor = KeyColor.Remove(7, 1); KeyColor = KeyColor + LengthKeyDouble.Substring(0, 1); LengthKeyDouble = LengthKeyDouble.Remove(0, 1); ColorInt = Convert.ToInt16(KeyColor, 2); bmp1.SetPixel(k, 0, Color.FromArgb(255, PixelColor.R, PixelColor.G, ColorInt)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 0); l++; if (l == 8) break; k++; } |
09.03.2015, 23:28 | #4 |
Пользователь
Регистрация: 09.03.2015
Сообщений: 10
|
//КОНЕЦ РАБОТЫ С ДЛИНОЙ КЛЮЧА
//НАЧАЛО РАБОТЫ С КЛЮЧЕМ byte[] Key = Encoding.ASCII.GetBytes(textBox3.Te xt); string[] KeyDouble = new string[Key.Length]; for (int i = 0; i < Key.Length; i++) { KeyDouble[i] = Convert.ToString(Key[i], 2).ToString(); while (KeyDouble[i].Length != 8) { KeyDouble[i] = "0" + KeyDouble[i]; } } int QuantityKeyColor = textBox3.Text.Length * 8; k = 0; l = 0; KeyColor = ""; string FullKeyDouble = ""; for (int i = 0; i < KeyDouble.Length; i++ ) FullKeyDouble += KeyDouble[i]; while (l < QuantityKeyColor) { PixelColor = bmp1.GetPixel(k, 1); KeyColor = Convert.ToString(PixelColor.R, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; KeyColor = KeyColor.Remove(7, 1); KeyColor = KeyColor + FullKeyDouble.Substring(0, 1); FullKeyDouble = FullKeyDouble.Remove(0, 1); ColorInt = Convert.ToInt16(KeyColor, 2); bmp1.SetPixel(k, 1, Color.FromArgb(255, ColorInt, PixelColor.G, PixelColor.B)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 1); l++; if (l == QuantityKeyColor) break; KeyColor = Convert.ToString(PixelColor.G, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; KeyColor = KeyColor.Remove(7, 1); KeyColor = KeyColor + FullKeyDouble.Substring(0, 1); FullKeyDouble = FullKeyDouble.Remove(0, 1); ColorInt = Convert.ToInt16(KeyColor, 2); bmp1.SetPixel(k, 1, Color.FromArgb(255, PixelColor.R, ColorInt, PixelColor.B)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 1); l++; if (l == QuantityKeyColor) break; KeyColor = Convert.ToString(PixelColor.B, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; KeyColor = KeyColor.Remove(7, 1); KeyColor = KeyColor + FullKeyDouble.Substring(0, 1); FullKeyDouble = FullKeyDouble.Remove(0, 1); ColorInt = Convert.ToInt16(KeyColor, 2); bmp1.SetPixel(k, 1, Color.FromArgb(255, PixelColor.R, PixelColor.G, ColorInt)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 1); l++; if (l == QuantityKeyColor) break; k++; } //КОНЕЦ РАБОТЫ С КЛЮЧЕМ |
09.03.2015, 23:29 | #5 |
Пользователь
Регистрация: 09.03.2015
Сообщений: 10
|
//НАЧАЛО РАБОТЫ С ДЛИНОЙ СООБЩЕНИЯ
int LengthMessage = textBox2.Text.Length; string LengthMessageDouble = Convert.ToString(LengthMessage, 2); while (LengthMessageDouble.Length != 8) { LengthMessageDouble = "0" + LengthMessageDouble; } k = 0; l = 0; string MessageColor = ""; while (l < 8) { PixelColor = bmp1.GetPixel(k, 2); MessageColor = Convert.ToString(PixelColor.R, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; MessageColor = MessageColor.Remove(7, 1); MessageColor = MessageColor + LengthMessageDouble.Substring(0, 1); LengthMessageDouble = LengthMessageDouble.Remove(0, 1); ColorInt = Convert.ToInt16(MessageColor, 2); bmp1.SetPixel(k, 2, Color.FromArgb(255, ColorInt, PixelColor.G, PixelColor.B)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 2); l++; if (l == 8) break; MessageColor = Convert.ToString(PixelColor.G, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; MessageColor = MessageColor.Remove(7, 1); MessageColor = MessageColor + LengthMessageDouble.Substring(0, 1); LengthMessageDouble = LengthMessageDouble.Remove(0, 1); ColorInt = Convert.ToInt16(MessageColor, 2); bmp1.SetPixel(k, 2, Color.FromArgb(255, PixelColor.R, ColorInt, PixelColor.B)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 2); l++; if (l == 8) break; MessageColor = Convert.ToString(PixelColor.B, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; MessageColor = MessageColor.Remove(7, 1); MessageColor = MessageColor + LengthMessageDouble.Substring(0, 1); LengthMessageDouble = LengthMessageDouble.Remove(0, 1); ColorInt = Convert.ToInt16(MessageColor, 2); bmp1.SetPixel(k, 2, Color.FromArgb(255, PixelColor.R, PixelColor.G, ColorInt)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 2); l++; if (l == 8) break; k++; } //КОНЕЦ РАБОТЫ С ДЛИНОЙ СООБЩЕНИЯ //НАЧАЛО РАБОТЫ С СООБЩЕНИЕМ byte[] Message = Encoding.ASCII.GetBytes(textBox2.Te xt); string[] MessageDouble = new string[Message.Length]; for (int i = 0; i < Message.Length; i++) { MessageDouble[i] = Convert.ToString(Message[i], 2).ToString(); while (MessageDouble[i].Length != 8) { MessageDouble[i] = "0" + MessageDouble[i]; } } |
09.03.2015, 23:29 | #6 |
Пользователь
Регистрация: 09.03.2015
Сообщений: 10
|
int QuantityMessageColor = textBox2.Text.Length * 8;
k = 0; l = 0; MessageColor = ""; string FullMessageDouble = ""; for (int i = 0; i < MessageDouble.Length; i++) FullMessageDouble += MessageDouble[i]; while (l < QuantityMessageColor) { PixelColor = bmp1.GetPixel(k, 3); MessageColor = Convert.ToString(PixelColor.R, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; MessageColor = MessageColor.Remove(7, 1); MessageColor = MessageColor + FullMessageDouble.Substring(0, 1); FullMessageDouble = FullMessageDouble.Remove(0, 1); ColorInt = Convert.ToInt16(MessageColor, 2); bmp1.SetPixel(k, 3, Color.FromArgb(255, ColorInt, PixelColor.G, PixelColor.B)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 3); l++; if (l == QuantityMessageColor) break; MessageColor = Convert.ToString(PixelColor.G, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; MessageColor = MessageColor.Remove(7, 1); MessageColor = MessageColor + FullMessageDouble.Substring(0, 1); FullMessageDouble = FullMessageDouble.Remove(0, 1); ColorInt = Convert.ToInt16(MessageColor, 2); bmp1.SetPixel(k, 3, Color.FromArgb(255, PixelColor.R, ColorInt, PixelColor.B)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 3); l++; if (l == QuantityMessageColor) break; MessageColor = Convert.ToString(PixelColor.B, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; MessageColor = MessageColor.Remove(7, 1); MessageColor = MessageColor + FullMessageDouble.Substring(0, 1); FullMessageDouble = FullMessageDouble.Remove(0, 1); ColorInt = Convert.ToInt16(MessageColor, 2); bmp1.SetPixel(k, 3, Color.FromArgb(255, PixelColor.R, PixelColor.G, ColorInt)); pictureBox1.Image = bmp1; PixelColor = bmp1.GetPixel(k, 3); l++; if (l == QuantityMessageColor) break; k++; } //КОНЕЦ РАБОТЫ С СООБЩЕНИЕМ MessageBox.Show("Запись в изображение прошла успешно!!!"); } |
09.03.2015, 23:31 | #7 |
Пользователь
Регистрация: 09.03.2015
Сообщений: 10
|
private void button3_Click(object sender, EventArgs e)
{ bool flag = false; //ПРОВЕРКА РАБОТЫ С ДЛИНОЙ КЛЮЧА Bitmap bmp1 = new Bitmap(pictureBox1.Image); Color PixelColor; int k = 0; int l = 0; string KeyColor = "", LengthKeyDouble = ""; int LengthKey; while (l < 8) { PixelColor = bmp1.GetPixel(k, 0); KeyColor = Convert.ToString(PixelColor.R, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; LengthKeyDouble += KeyColor.Substring(7, 1); l++; if (l == 8) break; KeyColor = Convert.ToString(PixelColor.G, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; LengthKeyDouble += KeyColor.Substring(7, 1); l++; if (l == 8) break; KeyColor = Convert.ToString(PixelColor.B, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; LengthKeyDouble += KeyColor.Substring(7, 1); l++; if (l == 8) break; k++; } LengthKey = Convert.ToInt32(LengthKeyDouble, 2); //КОНЕЦ ПРОВЕРКИ РАБОТЫ С ДЛИНОЙ КЛЮЧА //НАЧАЛО ПРОВЕРКИ РАБОТЫ С КЛЮЧЕМ string FullKeyDouble = ""; int QuantityKeyColor = LengthKey * 8; k = 0; l = 0; while (l < QuantityKeyColor) { PixelColor = bmp1.GetPixel(k, 1); KeyColor = Convert.ToString(PixelColor.R, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; FullKeyDouble += KeyColor.Substring(7, 1); l++; if (l == QuantityKeyColor) break; KeyColor = Convert.ToString(PixelColor.G, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; FullKeyDouble += KeyColor.Substring(7, 1); l++; if (l == QuantityKeyColor) break; KeyColor = Convert.ToString(PixelColor.B, 2).ToString(); while (KeyColor.Length != 8) KeyColor = "0" + KeyColor; FullKeyDouble += KeyColor.Substring(7, 1); l++; if (l == QuantityKeyColor) break; k++; } string[] KeyDouble = new string[LengthKey]; int[] KeyInt = new int[LengthKey]; char[] KeyChars = new char[LengthKey]; byte[] KeyByte = new byte[LengthKey]; string Key = ""; for (int i = 0; i < LengthKey; i++) { KeyDouble[i] = FullKeyDouble.Substring(0, 8); KeyInt[i] = Convert.ToInt32(KeyDouble[i], 2); KeyByte[i] = Convert.ToByte(KeyInt[i]); FullKeyDouble = FullKeyDouble.Remove(0, 8); } KeyChars = System.Text.Encoding.ASCII.GetChars (KeyByte); for (int i = 0; i < LengthKey; i++) { Key += KeyChars[i]; } //КОНЕЦ ПРОВЕРКИ РАБОТЫ С КЛЮЧЕМ |
09.03.2015, 23:31 | #8 |
Пользователь
Регистрация: 09.03.2015
Сообщений: 10
|
//НАЧАЛО ПРОВЕРКИ РАБОТЫ С ДЛИНОЙ СООБЩЕНИЯ
k = 0; l = 0; string MessageColor = "", LengthMessageDouble = ""; int LengthMessage; while (l < 8) { PixelColor = bmp1.GetPixel(k, 2); MessageColor = Convert.ToString(PixelColor.R, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; LengthMessageDouble += MessageColor.Substring(7, 1); l++; if (l == 8) break; PixelColor = bmp1.GetPixel(k, 2); MessageColor = Convert.ToString(PixelColor.G, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; LengthMessageDouble += MessageColor.Substring(7, 1); l++; if (l == 8) break; PixelColor = bmp1.GetPixel(k, 2); MessageColor = Convert.ToString(PixelColor.B, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; LengthMessageDouble += MessageColor.Substring(7, 1); l++; if (l == 8) break; k++; } LengthMessage = Convert.ToInt32(LengthMessageDouble , 2); //КОНЕЦ ПРОВЕРКИ РАБОТЫ С ДЛИНОЙ СООБЩЕНИЯ |
09.03.2015, 23:31 | #9 |
Пользователь
Регистрация: 09.03.2015
Сообщений: 10
|
//НАЧАЛО ПРОВЕРКИ РАБОТЫ С СООБЩЕНИЕМ
string FullMessageDouble = ""; int QuantityMessageColor = LengthMessage * 8; k = 0; l = 0; while (l < QuantityMessageColor) { PixelColor = bmp1.GetPixel(k, 3); MessageColor = Convert.ToString(PixelColor.R, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; FullMessageDouble += MessageColor.Substring(7, 1); l++; if (l == QuantityMessageColor) break; MessageColor = Convert.ToString(PixelColor.G, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; FullMessageDouble += MessageColor.Substring(7, 1); l++; if (l == QuantityMessageColor) break; MessageColor = Convert.ToString(PixelColor.B, 2).ToString(); while (MessageColor.Length != 8) MessageColor = "0" + MessageColor; FullMessageDouble += MessageColor.Substring(7, 1); l++; if (l == QuantityMessageColor) break; k++; } string[] MessageDouble = new string[LengthMessage]; int[] MessageInt = new int[LengthMessage]; char[] MessageChars = new char[LengthMessage]; byte[] MessageByte = new byte[LengthMessage]; string Message = ""; for (int i = 0; i < LengthMessage; i++) { MessageDouble[i] = FullMessageDouble.Substring(0, 8); MessageInt[i] = Convert.ToInt32(MessageDouble[i], 2); MessageByte[i] = Convert.ToByte(MessageInt[i]); FullMessageDouble = FullMessageDouble.Remove(0, 8); } MessageChars = System.Text.Encoding.ASCII.GetChars (MessageByte); for (int i = 0; i < LengthMessage; i++) { Message += MessageChars[i]; } //КОНЕЦ ПРОВЕРКИ РАБОТЫ С СООБЩЕНИЕМ if (Key == textBox3.Text) flag = true; if (flag) { textBox6.Text += "Длина ключа = " + LengthKey.ToString() + (char)13 + (char)10; textBox6.Text += "Ключ = " + Key + (char)13 + (char)10; textBox6.Text += "Длина сообщения = " + LengthMessage.ToString() + (char)13 + (char)10; textBox6.Text += "Сообщение = " + Message + (char)13 + (char)10; } else MessageBox.Show("Ключ введён неправильно"); } } } |
09.03.2015, 23:34 | #10 |
Пользователь
Регистрация: 09.03.2015
Сообщений: 10
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Наложить BMP на BMP. | sergeyrulit | Общие вопросы Delphi | 6 | 05.03.2015 13:41 |
Конвертор *.bmp to *.bmp | z768 | Мультимедиа в Delphi | 14 | 28.10.2014 21:11 |
с++, .BMP | Lavandil | Общие вопросы C/C++ | 10 | 26.11.2012 13:00 |
bmp | Ципихович Эндрю | Свободное общение | 10 | 01.04.2012 20:55 |
Загрузка BMP в Simple Graph и сохранение в BMP формат | artemavd | Общие вопросы Delphi | 10 | 02.10.2010 14:19 |