Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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;
- using System.Windows.Forms.DataVisualization.Charting;
- namespace WindowsFormsApp1
- {
- public partial class Form1 : Form
- {
- Bitmap foto;
- public Form1()
- {
- InitializeComponent();
- }
- private void Button1_Click(object sender, EventArgs e)
- {
- this.openFileDialog1.Filter = "Images2 (*.bmp, *.jpg, *.png )| *.bmp; *.jpg; *.png| Bitmap (*.bmp) | *.bmp|JPEG (*.jpg) | *.jpg |PNG (*.png)| *.png ";
- if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
- {
- try
- {
- foto = new Bitmap(this.openFileDialog1.FileName);
- float k = (foto.Height > foto.Width) ? ((float)pictureBox1.Height / foto.Height) : ((float)pictureBox1.Width / foto.Width);
- pictureBox1.Image = new Bitmap(foto, (int)(foto.Width * k), (int)(foto.Height * k));
- }
- catch
- {
- MessageBox.Show("Плохой файл!");
- }
- }
- }
- private void Button2_Click(object sender, EventArgs e)
- {
- switch ((comboBox1.SelectedItem.ToString().Trim()))
- {
- case "Sas":
- for (int x = 0; x < foto.Width; x++)
- {
- for (int y = 0; y < foto.Height; y++)
- {
- Color current = foto.GetPixel(x, y);
- int avg = (current.R + current.B + current.G) / 3;
- Color output = Color.FromArgb(avg, avg, avg);
- foto.SetPixel(x, y, output);
- }
- }
- break;
- case "pas":
- for (int x = 0; x < foto.Width; x++)
- {
- for (int y = 0; y < foto.Height; y++)
- {
- Color current = foto.GetPixel(x, y);
- int avg = Math.Max(Math.Max(current.R,current.B),current.G);
- Color output = Color.FromArgb(avg, avg, avg);
- foto.SetPixel(x, y, output);
- }
- }
- break;
- case "cas":
- for (int x = 0; x < foto.Width; x++)
- {
- for (int y = 0; y < foto.Height; y++)
- {
- Color current = foto.GetPixel(x, y);
- double avg =(255 / (Math.Sqrt(255 * 255 + 255 * 255 + 255 * 255))) * (Math.Sqrt(current.R* current.R + current.B * current.B + current.G * current.G));
- Color output = Color.FromArgb((int)avg, (int)avg, (int)avg);
- foto.SetPixel(x, y, output);
- }
- }
- break;
- case "las":
- for (int x = 0; x < foto.Width; x++)
- {
- for (int y = 0; y < foto.Height; y++)
- {
- Color current = foto.GetPixel(x, y);
- int avg = (Math.Max(Math.Max(current.R, current.B), current.G)+ Math.Min(Math.Min(current.R, current.B), current.G))/2;
- Color output = Color.FromArgb(avg, avg, avg);
- foto.SetPixel(x, y, output);
- }
- }
- break;
- case "vas":
- /* this.chart1.Titles.Add("Total Income");
- Series series = this.chart1.Series.Add("SADASDAS");
- series.ChartType = SeriesChartType.Spline;*/
- for (int x = 0; x < foto.Width; x++)
- {
- for (int y = 0; y < foto.Height; y++)
- {
- /* if ((x == 2) && (y<100))
- series.Points.AddXY(x, y);
- if ((x == 3) && (y > 166) && (y < 255))
- series.Points.AddXY(x, y);*/
- Color current = foto.GetPixel(x, y);
- int avg = (int)(0.213*current.R + 0.715*current.B + 0.072*current.G);
- Color output = Color.FromArgb(avg, avg, avg);
- foto.SetPixel(x, y, output);
- }
- }
- break;
- case "neg":
- for (int x = 0; x < foto.Width; x++)
- {
- for (int y = 0; y < foto.Height; y++)
- {
- Color current = foto.GetPixel(x, y);
- int avg1 = (255 - current.R);
- int avg2 = (255 - current.G);
- int avg3 = (255 - current.B);
- Color output = Color.FromArgb(avg1, avg2, avg3);
- foto.SetPixel(x, y, output);
- }
- }
- break;
- case "ln":
- for (int x = 0; x < foto.Width; x++)
- {
- for (int y = 0; y < foto.Height; y++)
- {
- Color current = foto.GetPixel(x, y);
- int avg1 = (int)((255 / Math.Log(1+255))*Math.Log(current.R+1));
- int avg2 = (int)((255 / Math.Log(1 + 255)) * Math.Log(current.G + 1));
- int avg3 = (int)((255 / Math.Log(1 + 255)) * Math.Log(current.B + 1));
- Color output = Color.FromArgb(avg1, avg2, avg3);
- foto.SetPixel(x, y, output);
- }
- }
- break;
- case "lg":
- for (int x = 0; x < foto.Width; x++)
- {
- for (int y = 0; y < foto.Height; y++)
- {
- Color current = foto.GetPixel(x, y);
- int avg1 = (int)((255 / Math.Log(1 + 255)) * Math.Log10(current.R + 1));
- int avg2 = (int)((255 / Math.Log(1 + 255)) * Math.Log10(current.G + 1));
- int avg3 = (int)((255 / Math.Log(1 + 255)) * Math.Log10(current.B + 1));
- Color output = Color.FromArgb(avg1, avg2, avg3);
- foto.SetPixel(x, y, output);
- }
- }
- break;
- case "step":
- double cct = Convert.ToDouble(numericUpDown1.Value);
- double c = 255 / Math.Pow(255, cct);
- for (int x = 0; x < foto.Width; x++)
- {
- for (int y = 0; y < foto.Height; y++)
- {
- Color current = foto.GetPixel(x, y);
- double avg1 = c * Math.Pow(current.R,cct);
- double avg2 = c * Math.Pow(current.G,cct);
- double avg3 = c * Math.Pow(current.B,cct);
- Color output = Color.FromArgb((int)avg1, (int)avg2, (int)avg3);
- foto.SetPixel(x, y, output);
- }
- }
- break;
- default:
- MessageBox.Show("You're playing League");
- break;
- }
- float k = (foto.Height > foto.Width) ? ((float)pictureBox2.Height / foto.Height) : ((float)pictureBox2.Width / foto.Width);
- pictureBox2.Image = new Bitmap(foto, (int)(foto.Width * k), (int)(foto.Height * k));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement