
- •На тему: «представлення і обробка статичних зображень. Стеганографія»
- •1. Мета роботи
- •Короткі теоретичні відомості
- •3. Лабораторне завдання Написати програму для відкриття 24-бітного bmp файлу, яка перетворює кольорове зображення в відтінки сірого. Реалізувати стеганографічне кодування та декодування тексту.
- •4.Код програми
- •Файл Program.Cs
- •Файл Text.Cs
- •Файл TextExtracter.Cs
- •Файл TextHider.Cs
- •5.Результат виконання програми
- •6.Висновок
Файл TextHider.Cs
using System.Drawing;
namespace HideMe
{
static class TextHider
{
public static void HideText(string t, string pathToBmp, string pathToResult, int bits)
{
var text = new Text(t);
var bmp = new Bitmap(pathToBmp);
int index = 0;
for (int y = 0; y < bmp.Height; y++)
{
for (int x = 0; x < bmp.Width; x++)
{
Color pixel = bmp.GetPixel(x, y);
int colorGray = (int)(pixel.R * 0.299 + pixel.G * 0.587 + pixel.B * 0.114);//Перетворення в сірий
pixel = Color.FromArgb(colorGray, colorGray, colorGray); //Перетворення в сірий
Color newPixel = HideBits(text.GetBits(index, 3 * bits), pixel);
index += 3*bits;
bmp.SetPixel(x, y, newPixel);
}
}
bmp.Save(pathToResult);
}
private static Color HideBits(bool[] bits, Color c)
{
int n = bits.Length/3;
byte[] rgb = new[] {c.R, c.G, c.B};
int index = 0;
for (int i = 0; i < rgb.Length; i++)
{
for (int j = 0; j < n; j++)
{
rgb[i] = SetBit(rgb[i], bits[index], j);
index++;
}
}
return Color.FromArgb(rgb[0], rgb[1], rgb[2]);
}
private static byte SetBit(byte b, bool bit, int index)
{
byte mask = 1;
mask <<= index;
if (bit)
{
b |= mask;
}
else
{
b &= (byte)~mask;
}
return b;
}
}
}
5.Результат виконання програми
Рис. 1. Кодування зображення.
Рис. 2. Розкодування зображення.
6.Висновок
В даній лабораторній роботі я ознайомилася із статичними зображеннями і методами їх обробки, а також можливостями використання графічних файлів для стеганографії. Була реалізована программа для стеганографії. Як бачимо із результатів виконання програми графічні файли можна застосувати для стенографії без значних втрат якості зображення.