图像编程-彩色图像灰度化

来源:互联网 发布:windows 10 周年更新 编辑:程序博客网 时间:2024/05/18 22:51
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace expGray{    public partial class frmPicGray : Form    {        public Bitmap[] bmp;        public Bitmap tempBmp;        int n = 0;        public frmPicGray()        {            InitializeComponent();        }        private void frmPicGray_Load(object sender, EventArgs e)        {            bmp = new Bitmap[4];            string picPath;            for(int i=0;i<4;i++)            {                <span style="background-color: rgb(255, 102, 102);">picPath = "C:\\Users\\小鸟达子\\Desktop\\大学\\Visual C#.NET实验与案例教程\\第1章上机实验指导\\图像编程\\expGray\\expGray\\NewFolder1\\"+i.ToString() + ".jpg";</span>                bmp[i] = new Bitmap(picPath);            }            pbPicNav.Image = bmp[0];            tempBmp = (Bitmap)pbPicNav.Image;        }        private void frmPicGray_Paint(object sender, PaintEventArgs e)        {            Graphics g = e.Graphics;            g.DrawImage(tempBmp, pbPicNav.Width, pbPicNav.Height, tempBmp.Width                ,tempBmp.Height);        }        private void btnGaryAvg_Click(object sender, EventArgs e)        {            Color bmpColoor;            int grayColor;            tempBmp = (Bitmap)pbPicNav.Image;            for(int i=0;i<tempBmp.Width;i++)                for(int j=0;j<tempBmp.Height;j++)                {                    bmpColoor = tempBmp.GetPixel(i, j);                    grayColor = (int)(bmpColoor.R + bmpColoor.G + bmpColoor.B) / 3;                    tempBmp.SetPixel(i, j, Color.FromArgb(grayColor, grayColor, grayColor));                }            Invalidate();        }        private void butGraySen_Click(object sender, EventArgs e)        {            Color bmpColoor;            int grayColor;            tempBmp = (Bitmap)pbPicNav.Image;            for (int i = 0; i < tempBmp.Width; i++)                for (int j = 0; j < tempBmp.Height; j++)                {                    bmpColoor = tempBmp.GetPixel(i, j);                    grayColor = (int)(bmpColoor.R*0.299 + bmpColoor.G*0.587                        + bmpColoor.B*0.114);                    tempBmp.SetPixel(i, j, Color.FromArgb(grayColor, grayColor, grayColor));                }            Invalidate();        }        private void btnGaryDir_Click(object sender, EventArgs e)        {            Color bmpColoor;            int grayColor;            tempBmp = (Bitmap)pbPicNav.Image;            for (int i = 0; i < tempBmp.Width; i++)                for (int j = 0; j < tempBmp.Height; j++)                {                    bmpColoor = tempBmp.GetPixel(i, j);                    grayColor = (int)(bmpColoor.G);                    tempBmp.SetPixel(i, j, Color.FromArgb(grayColor, grayColor, grayColor));                }            Invalidate();        }        private void btnSave_Click(object sender, EventArgs e)        {            if (tempBmp == null)                return;            SaveFileDialog sDlg=new SaveFileDialog();            sDlg.Title = " Save as ";            sDlg.OverwritePrompt = true;            sDlg.ShowHelp = true;           <span style="background-color: rgb(255, 102, 102);"> sDlg.Filter="BMP 文件 (*.bmp)|*.bmp|GIF文件 (*.gif) |*.gif |JPEG文件  (*.jpg) |*.jpg ";</span>            if(sDlg.ShowDialog()==DialogResult.OK)            {                string fName = sDlg.FileName;                string sExtend = fName.Remove(0, fName.Length - 3);                switch(sExtend)                {                    case "bmp":                        tempBmp.Save(fName, System.Drawing.Imaging.ImageFormat.Bmp);                        break;                    case "gif":                        tempBmp.Save(fName, System.Drawing.Imaging.ImageFormat.Gif);                        break;                    case "jpg":                        tempBmp.Save(fName, System.Drawing.Imaging.ImageFormat.Jpeg);                        break;                    default:                        break;                }            }        }        private void btnLastPage_Click(object sender, EventArgs e)        {            n = (--n + 4) % 4;            pbPicNav.Image = bmp[n];        }        private void btnNextPage_Click(object sender, EventArgs e)        {            n = (++n ) % 4;            pbPicNav.Image = bmp[n];        }        private void pbPicNav_Click(object sender, EventArgs e)        {        }    }}

0 0
原创粉丝点击