Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.36 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Windows.Forms.DataVisualization.Charting;
  11. namespace WindowsFormsApp1
  12. {
  13. public partial class Form1 : Form
  14. {
  15. Bitmap foto;
  16. public Form1()
  17. {
  18. InitializeComponent();
  19. }
  20.  
  21. private void Button1_Click(object sender, EventArgs e)
  22. {
  23. this.openFileDialog1.Filter = "Images2 (*.bmp, *.jpg, *.png )| *.bmp; *.jpg; *.png| Bitmap (*.bmp) | *.bmp|JPEG (*.jpg) | *.jpg |PNG (*.png)| *.png ";
  24. if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
  25. {
  26. try
  27. {
  28. foto = new Bitmap(this.openFileDialog1.FileName);
  29. float k = (foto.Height > foto.Width) ? ((float)pictureBox1.Height / foto.Height) : ((float)pictureBox1.Width / foto.Width);
  30. pictureBox1.Image = new Bitmap(foto, (int)(foto.Width * k), (int)(foto.Height * k));
  31. }
  32. catch
  33. {
  34. MessageBox.Show("Плохой файл!");
  35. }
  36. }
  37. }
  38.  
  39. private void Button2_Click(object sender, EventArgs e)
  40. {
  41. switch ((comboBox1.SelectedItem.ToString().Trim()))
  42. {
  43. case "Sas":
  44. for (int x = 0; x < foto.Width; x++)
  45. {
  46. for (int y = 0; y < foto.Height; y++)
  47. {
  48. Color current = foto.GetPixel(x, y);
  49. int avg = (current.R + current.B + current.G) / 3;
  50. Color output = Color.FromArgb(avg, avg, avg);
  51. foto.SetPixel(x, y, output);
  52.  
  53.  
  54. }
  55. }
  56. break;
  57.  
  58. case "pas":
  59. for (int x = 0; x < foto.Width; x++)
  60. {
  61. for (int y = 0; y < foto.Height; y++)
  62. {
  63. Color current = foto.GetPixel(x, y);
  64. int avg = Math.Max(Math.Max(current.R,current.B),current.G);
  65. Color output = Color.FromArgb(avg, avg, avg);
  66. foto.SetPixel(x, y, output);
  67.  
  68. }
  69. }
  70. break;
  71.  
  72. case "cas":
  73.  
  74. for (int x = 0; x < foto.Width; x++)
  75. {
  76. for (int y = 0; y < foto.Height; y++)
  77. {
  78. Color current = foto.GetPixel(x, y);
  79. 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));
  80. Color output = Color.FromArgb((int)avg, (int)avg, (int)avg);
  81. foto.SetPixel(x, y, output);
  82.  
  83. }
  84. }
  85. break;
  86.  
  87. case "las":
  88.  
  89. for (int x = 0; x < foto.Width; x++)
  90. {
  91. for (int y = 0; y < foto.Height; y++)
  92. {
  93.  
  94. Color current = foto.GetPixel(x, y);
  95. int avg = (Math.Max(Math.Max(current.R, current.B), current.G)+ Math.Min(Math.Min(current.R, current.B), current.G))/2;
  96. Color output = Color.FromArgb(avg, avg, avg);
  97. foto.SetPixel(x, y, output);
  98. }
  99. }
  100. break;
  101.  
  102. case "vas":
  103. /* this.chart1.Titles.Add("Total Income");
  104.  
  105. Series series = this.chart1.Series.Add("SADASDAS");
  106. series.ChartType = SeriesChartType.Spline;*/
  107.  
  108. for (int x = 0; x < foto.Width; x++)
  109. {
  110. for (int y = 0; y < foto.Height; y++)
  111. {
  112. /* if ((x == 2) && (y<100))
  113. series.Points.AddXY(x, y);
  114. if ((x == 3) && (y > 166) && (y < 255))
  115. series.Points.AddXY(x, y);*/
  116. Color current = foto.GetPixel(x, y);
  117. int avg = (int)(0.213*current.R + 0.715*current.B + 0.072*current.G);
  118. Color output = Color.FromArgb(avg, avg, avg);
  119. foto.SetPixel(x, y, output);
  120. }
  121. }
  122.  
  123. break;
  124.  
  125. case "neg":
  126.  
  127. for (int x = 0; x < foto.Width; x++)
  128. {
  129. for (int y = 0; y < foto.Height; y++)
  130. {
  131.  
  132. Color current = foto.GetPixel(x, y);
  133. int avg1 = (255 - current.R);
  134. int avg2 = (255 - current.G);
  135. int avg3 = (255 - current.B);
  136. Color output = Color.FromArgb(avg1, avg2, avg3);
  137. foto.SetPixel(x, y, output);
  138. }
  139. }
  140. break;
  141.  
  142. case "ln":
  143.  
  144. for (int x = 0; x < foto.Width; x++)
  145. {
  146. for (int y = 0; y < foto.Height; y++)
  147. {
  148.  
  149. Color current = foto.GetPixel(x, y);
  150. int avg1 = (int)((255 / Math.Log(1+255))*Math.Log(current.R+1));
  151. int avg2 = (int)((255 / Math.Log(1 + 255)) * Math.Log(current.G + 1));
  152. int avg3 = (int)((255 / Math.Log(1 + 255)) * Math.Log(current.B + 1));
  153. Color output = Color.FromArgb(avg1, avg2, avg3);
  154. foto.SetPixel(x, y, output);
  155. }
  156. }
  157. break;
  158.  
  159. case "lg":
  160.  
  161. for (int x = 0; x < foto.Width; x++)
  162. {
  163. for (int y = 0; y < foto.Height; y++)
  164. {
  165.  
  166. Color current = foto.GetPixel(x, y);
  167. int avg1 = (int)((255 / Math.Log(1 + 255)) * Math.Log10(current.R + 1));
  168. int avg2 = (int)((255 / Math.Log(1 + 255)) * Math.Log10(current.G + 1));
  169. int avg3 = (int)((255 / Math.Log(1 + 255)) * Math.Log10(current.B + 1));
  170. Color output = Color.FromArgb(avg1, avg2, avg3);
  171. foto.SetPixel(x, y, output);
  172.  
  173. }
  174. }
  175.  
  176. break;
  177.  
  178. case "step":
  179. double cct = Convert.ToDouble(numericUpDown1.Value);
  180. double c = 255 / Math.Pow(255, cct);
  181. for (int x = 0; x < foto.Width; x++)
  182. {
  183. for (int y = 0; y < foto.Height; y++)
  184. {
  185. Color current = foto.GetPixel(x, y);
  186. double avg1 = c * Math.Pow(current.R,cct);
  187. double avg2 = c * Math.Pow(current.G,cct);
  188. double avg3 = c * Math.Pow(current.B,cct);
  189. Color output = Color.FromArgb((int)avg1, (int)avg2, (int)avg3);
  190. foto.SetPixel(x, y, output);
  191. }
  192. }
  193. break;
  194.  
  195.  
  196. default:
  197. MessageBox.Show("You're playing League");
  198. break;
  199. }
  200.  
  201. float k = (foto.Height > foto.Width) ? ((float)pictureBox2.Height / foto.Height) : ((float)pictureBox2.Width / foto.Width);
  202. pictureBox2.Image = new Bitmap(foto, (int)(foto.Width * k), (int)(foto.Height * k));
  203. }
  204.  
  205. }
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement