Advertisement
ada1711

Untitled

Oct 27th, 2024
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.75 KB | None | 0 0
  1. using System;
  2. using System.Drawing;
  3. using System.IO;
  4.  
  5. namespace ImageProcessing
  6. {
  7. internal class Program
  8. {
  9. // Path to the input and output image files
  10. // The file should be located where the .exe application is
  11. public static string imagePath = $@"image.jpg";
  12. public static string newImagePath = $@"newImage.jpg";
  13.  
  14. public static void Main(string[] args)
  15. {
  16. // Loading the image from the file
  17. Bitmap image = LoadImage(imagePath);
  18.  
  19. // Checking if the image was loaded successfully
  20. bool test = (image != null);
  21. string testResult = test ? "successfully" : "unsuccessfully";
  22.  
  23. Console.WriteLine($"Loading image: {imagePath}...\n " +
  24. $"... completed with {testResult}\n");
  25.  
  26. int choice;
  27. while (true && test)
  28. {
  29. Console.WriteLine(
  30. "Choose an option:\n" +
  31. "[1] Brighten the image\n" +
  32. "[2] Darken the image\n" +
  33. "[3] Swap colors\n" +
  34. "[0] Exit");
  35.  
  36. choice = int.Parse(Console.ReadLine());
  37.  
  38. Console.Clear();
  39. switch (choice)
  40. {
  41. case 1:
  42. //BrightenImage(image);
  43. ChangeImageBrightness(image, 50);
  44. break;
  45. case 2:
  46. //DarkenImage(image);
  47. ChangeImageBrightness(image, -50);
  48. break;
  49. case 3:
  50. SwapColors(image);
  51. break;
  52. case 0:
  53. Console.WriteLine("Exiting the application");
  54. return;
  55. default:
  56. Console.WriteLine("Invalid operation");
  57. break;
  58. }
  59. }
  60.  
  61. Console.ReadKey();
  62. }
  63.  
  64. // Method to brighten the image
  65. public static void BrightenImage(Bitmap img)
  66. {
  67. int brighteningStrength = 50;
  68. // Iterating through each pixel of the image
  69. for (int i = 0; i < img.Width; i++)
  70. {
  71. for (int j = 0; j < img.Height; j++)
  72. {
  73. // Retrieving the pixel value
  74. Color pixel = img.GetPixel(i, j);
  75.  
  76. // Changing the brightness of the pixel by 50 units
  77. Color newPixel = Color.FromArgb(
  78. ClampValue(pixel.R + brighteningStrength),
  79. ClampValue(pixel.G + brighteningStrength),
  80. ClampValue(pixel.B + brighteningStrength));
  81.  
  82. // Setting the new pixel value
  83. img.SetPixel(i, j, newPixel);
  84. }
  85. }
  86.  
  87. Console.WriteLine("...Brightened \n\n");
  88. // Saving the modified image
  89. img.Save(newImagePath);
  90. }
  91.  
  92. public static void DarkenImage(Bitmap img)
  93. {
  94. int darkeningStrength = 50;
  95. for (int i = 0; i < img.Width; i++)
  96. {
  97. for (int j = 0; j < img.Height; j++)
  98. {
  99. // Retrieving the pixel value
  100. Color pixel = img.GetPixel(i, j);
  101.  
  102. // Changing the brightness of the pixel by 50 units
  103. Color newPixel = Color.FromArgb(
  104. ClampValue(pixel.R - darkeningStrength),
  105. ClampValue(pixel.G - darkeningStrength),
  106. ClampValue(pixel.B - darkeningStrength));
  107.  
  108. // Setting the new pixel value
  109. img.SetPixel(i, j, newPixel);
  110. }
  111. }
  112.  
  113. Console.WriteLine("...Darkened \n\n");
  114. // Saving the modified image
  115. img.Save(newImagePath);
  116. }
  117.  
  118. public static void ChangeImageBrightness(Bitmap img, int modificationStrength)
  119. {
  120. for (int i = 0; i < img.Width; i++)
  121. {
  122. for (int j = 0; j < img.Height; j++)
  123. {
  124. // Retrieving the pixel value
  125. Color pixel = img.GetPixel(i, j);
  126.  
  127. // Changing the brightness of the pixel by the specified amount
  128. Color newPixel = Color.FromArgb(
  129. ClampValue(pixel.R + modificationStrength),
  130. ClampValue(pixel.G + modificationStrength),
  131. ClampValue(pixel.B + modificationStrength));
  132.  
  133. // Setting the new pixel value
  134. img.SetPixel(i, j, newPixel);
  135. }
  136. }
  137.  
  138. Console.WriteLine("...Brightness changed \n\n");
  139. // Saving the modified image
  140. img.Save(newImagePath);
  141. }
  142.  
  143. public static void SwapColors(Bitmap img)
  144. {
  145. Color colorToReplace, newColor;
  146.  
  147. // Getting colors from the user
  148. Console.WriteLine("Enter the value of the color to be replaced in RGB format. Provide three values from the range 0-255, separated by commas (,).");
  149. colorToReplace = ConvertStringToColor(Console.ReadLine());
  150.  
  151. Console.WriteLine("Enter the value of the new color in RGB format. Provide three values from the range 0-255, separated by commas (,).");
  152. newColor = ConvertStringToColor(Console.ReadLine());
  153.  
  154. // Loop to iterate over each pixel and replace the matching color
  155. int modifiedPixelCount = 0;
  156. for (int i = 0; i < img.Width; i++)
  157. {
  158. for (int j = 0; j < img.Height; j++)
  159. {
  160. Color color = img.GetPixel(i, j);
  161.  
  162. if (color == colorToReplace)
  163. {
  164. img.SetPixel(i, j, newColor);
  165. modifiedPixelCount++;
  166. }
  167. }
  168. }
  169.  
  170. Console.WriteLine($"Replaced {modifiedPixelCount} pixels.\n\n");
  171.  
  172. // Saving the modified image
  173. img.Save(newImagePath);
  174. }
  175.  
  176. // Method to convert user-input RGB values to a Color object
  177. public static Color ConvertStringToColor(string rgb)
  178. {
  179. int r, g, b;
  180.  
  181. try
  182. {
  183. string[] rgbComponents = rgb.Split(',');
  184. r = int.Parse(rgbComponents[0]);
  185. g = int.Parse(rgbComponents[1]);
  186. b = int.Parse(rgbComponents[2]);
  187. return Color.FromArgb(r, g, b);
  188. }
  189. catch (Exception e)
  190. {
  191. Console.WriteLine("Invalid color input. Setting default color (black).");
  192. return Color.Black;
  193. }
  194. }
  195.  
  196. // Method to prevent values from exceeding the 0-255 (RGB) range by clamping the variables
  197. public static int ClampValue(int value)
  198. {
  199. if (value < 0) return 0;
  200. if (value > 255) return 255;
  201.  
  202. return value;
  203. }
  204.  
  205. // Method to load the image from the given path and display a message if there's an issue
  206. public static Bitmap LoadImage(string filePath)
  207. {
  208. if (File.Exists(filePath) == false) return null;
  209.  
  210. try
  211. {
  212. Bitmap bitmap = new Bitmap(filePath);
  213. return bitmap;
  214. }
  215. catch (Exception e)
  216. {
  217. Console.WriteLine(e);
  218. return null;
  219. }
  220. }
  221. }
  222. }
  223.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement