14761

Увеличение и уменьшение цифровых изображений

Лабораторная работа

Информатика, кибернетика и программирование

Цель работы: Изучить методы увеличения и уменьшения цифровых изображений и применить полученные знания на практике. Задание для второго варианта: написать программу способную производить увеличение/уменьшение исходного изображения в нецелое число раз методом билин...

Русский

2013-06-09

263.36 KB

9 чел.

Цель работы: Изучить методы увеличения и уменьшения цифровых изображений и применить полученные знания на практике.

Задание для второго варианта: написать программу способную производить увеличение/уменьшение исходного изображения в нецелое число раз методом билинейной интерполяции. С помощью программы уменьшить исходное изображение в 1,2; 3; 7; 21 раз. Полученные изображения затем восстановить до исходного размера и сравнить результаты с исходным изображением.

Код программы: 

using System;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Windows.Forms;

namespace ZOS_LAB1_UNIVER

{

   public partial class Form1 : Form

   {

       public double koef = 1;

       public int w1, h1,w_temp,h_temp;

       public Form1()

       {

           InitializeComponent();

       }

       private void button1_Click(object sender, EventArgs e)

       {

           openFileDialog1.Filter = "BMP Picture |*.bmp";

           openFileDialog1.ShowDialog();

           pictureBox1.Hide();

           pictureBox2.Hide();

           

           pictureBox1.Paint += new PaintEventHandler(this.pictureBox1_Paint);

           pictureBox1.Refresh();

           Image img2 = new Bitmap(openFileDialog1.FileName);

           pictureBox2.Image = img2;

           

           w_temp = img2.Width;

           h_temp = img2.Height;

       }

       private void pictureBox1_Paint(object sender, PaintEventArgs e)

       {

           Image img = new Bitmap(openFileDialog1.FileName);

           int width = img.Width;

           int height = img.Height;

           

           

           e.Graphics.InterpolationMode = InterpolationMode.Bilinear;

           e.Graphics.DrawImage(img, new Rectangle(0, 0, w1, h1), 0, 0, width, height, GraphicsUnit.Pixel);

           

       }

       private void Form1_Load(object sender, EventArgs e)

       {

       }

       private void button2_Click(object sender, EventArgs e)

       {

           pictureBox2.Show();

           pictureBox1.Hide();  

          

       }

       private void button3_Click(object sender, EventArgs e)

       {

           pictureBox1.Show();

           pictureBox2.Hide();

          

       }

#region koef

       private void button4_Click(object sender, EventArgs e)

       {

           koef = 1.2;

           w1 = w_temp * Convert.ToInt16(koef);

           h1 = h_temp * Convert.ToInt16(koef);

       }

       private void button5_Click(object sender, EventArgs e)

       {

           koef = 3;

           w1 = w_temp * Convert.ToInt16(koef);

           h1 = h_temp * Convert.ToInt16(koef);

          

       }

       private void button6_Click(object sender, EventArgs e)

       {

           koef = 7;

           w1 = w_temp * Convert.ToInt16(koef);

           h1 = h_temp * Convert.ToInt16(koef);

           

       }

       private void button7_Click(object sender, EventArgs e)

       {

           koef = 21;

           w1 = w_temp * Convert.ToInt16(koef);

           h1 = h_temp * Convert.ToInt16(koef);

         

       }

       private void button8_Click(object sender, EventArgs e)

       {

           koef = 1.2;

           w1 = w_temp / Convert.ToInt16(koef);

           h1 = h_temp / Convert.ToInt16(koef);

       }

       private void button9_Click(object sender, EventArgs e)

       {

           koef = 3;

           w1 = w_temp / Convert.ToInt16(koef);

           h1 = h_temp / Convert.ToInt16(koef);

       }

       private void button10_Click(object sender, EventArgs e)

       {

           koef = 7;

           w1 = w_temp / Convert.ToInt16(koef);

           h1 = h_temp / Convert.ToInt16(koef);

       }

       private void button11_Click(object sender, EventArgs e)

       {

           koef = 21;

           w1 = w_temp / Convert.ToInt16(koef);

           h1 = h_temp / Convert.ToInt16(koef);

       }

#endregion

     }

}

Скриншоты работы:

Увеличение:


Уменьшение:

Вывод: в ходе работы изучили методы увеличения и уменьшения цветных изображений.