- •Содержание
- •Введение
- •Постановка задачи
- •Теоретическое исследование
- •Представление изображений в эвм. Форматы изображений
- •Общие положения о защите авторского права и водяных знаках
- •Методы внедрения водяных знаков в изображения
- •Метод микширования
- •Метод нанесения текста
- •Метод lsb
- •Метод Patchwork
- •Обзор существующих программ-аналогов
- •Tsr Watermark Image 1.9.6.4
- •ImageSpyer 1.1
- •Разработка схемы алгоритма и её описание
- •Общая схема работы программы
- •Описание работы класса wmParameters
- •Описание работы класса TextParameters
- •Описание работы класса lsbInjector
- •Описание работы класса PatchworkInjector
- •Разработка программы
- •Тестирование и отладка
- •Руководство пользователя
- •Описание менюFile
- •Описание интерфейса метода микширования
- •Описание интерфейса метода нанесения текста
- •Описание интерфейса методовLsBиPatchwork
- •Заключение
- •Список использованных источников
- •Приложение а. Диаграмма классов приложения watermark injector
- •Приложение б. Исходный текст классаmainform
- •Приложение в. Исходный текст класса wmparameters
- •Приложение г. Исходный текст класса textparameters
- •Приложение д. Исходный текст классаlsbinjector
- •Приложение д. Исходный текст классаpatchworkinjector
Приложение в. Исходный текст класса wmparameters
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WatermarkInjector
{
public partial class WMParameters : Form
{
public enum VrAlignment { Upper, Center, Lower };
public enum HrAlignment { Left, Middle, Right };
public enum WMLayout { Tile, Center, Stretch, Zoom };
private string encpath;
private double transparencyRatio, WMSize;
private VrAlignment encVA;
private HrAlignment encHA;
private WMLayout encLa;
private OpenFileDialog openWMDlg;
public string pathname { get { return encpath; } }
public VrAlignment VA {get {return encVA;}}
public HrAlignment HA {get {return encHA;}}
public WMLayout LA { get { return encLa; } }
public double TR { get { return transparencyRatio; } }
public double WS { get { return WMSize; } }
public WMParameters()
{
InitializeComponent();
button2.DialogResult = DialogResult.OK;
button3.DialogResult = DialogResult.Cancel;
trackBar1.Minimum = 0;
trackBar1.Maximum = 100;
trackBar2.Minimum = 0;
trackBar2.Maximum = 100;
}
private void button1_Click(object sender, EventArgs e)
{
openWMDlg = new OpenFileDialog();
openWMDlg.RestoreDirectory = true;
openWMDlg.FilterIndex = 1;
openWMDlg.Filter = "Images (*.jpg,*.png,*.gif,*.bmp)|*.jpg;*.png;*.gif;*.bmp";
if (openWMDlg.ShowDialog() == DialogResult.OK)
{
encpath=openWMDlg.FileName;
textBox1.Text = encpath;
Image img = Image.FromFile(openWMDlg.FileName);
Bitmap WMBmp = new Bitmap(img);
pictureBox1.Image = WMBmp;
}
}
private void button2_Click(object sender, EventArgs e)
{
transparencyRatio = (double)trackBar1.Value / 100;
WMSize = (double)trackBar2.Value / 100;
if ((radioButton1.Checked) || (radioButton4.Checked) || (radioButton7.Checked))
encVA = VrAlignment.Upper;
else if ((radioButton2.Checked) || (radioButton5.Checked) || (radioButton8.Checked))
encVA = VrAlignment.Center;
else if ((radioButton3.Checked) || (radioButton6.Checked) || (radioButton9.Checked))
encVA = VrAlignment.Lower;
if ((radioButton1.Checked) || (radioButton2.Checked) || (radioButton3.Checked))
encHA = HrAlignment.Left;
else if ((radioButton4.Checked) || (radioButton5.Checked) || (radioButton6.Checked))
encHA = HrAlignment.Middle;
else if ((radioButton7.Checked) || (radioButton8.Checked) || (radioButton9.Checked))
encHA = HrAlignment.Right;
this.Close();
}
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
label5.Text=Convert.ToString(trackBar1.Value)+'%';
}
private void trackBar2_ValueChanged(object sender, EventArgs e)
{
label6.Text = Convert.ToString(trackBar2.Value) + '%';
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
label2.Text = "Upper left";
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
label2.Text = "Center left";
}
private void radioButton3_CheckedChanged(object sender, EventArgs e)
{
label2.Text = "Lower left";
}
private void radioButton4_CheckedChanged(object sender, EventArgs e)
{
label2.Text = "Upper middle";
}
private void radioButton5_CheckedChanged(object sender, EventArgs e)
{
label2.Text = "Center";
}
private void radioButton6_CheckedChanged(object sender, EventArgs e)
{
label2.Text = "Lower middle";
}
private void radioButton7_CheckedChanged(object sender, EventArgs e)
{
label2.Text = "Upper right";
}
private void radioButton8_CheckedChanged(object sender, EventArgs e)
{
label2.Text = "Center right";
}
private void radioButton9_CheckedChanged(object sender, EventArgs e)
{
label2.Text = "Lower right";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.Text)
{
case "Set/Tile/Justify":
encLa = WMLayout.Tile;
break;
case "Center":
encLa = WMLayout.Center;
break;
case "Stretch":
encLa = WMLayout.Stretch;
break;
case "Zoom":
encLa = WMLayout.Zoom;
break;
}
}
}
}