Advertisement
Cassimus

Edytor obrazu

Apr 5th, 2025
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.07 KB | None | 0 0
  1. using System;
  2. using System.Drawing;
  3. using System.IO;
  4.  
  5. namespace PrzetwarzanieObrazu
  6. {
  7.     internal class Program
  8.     {
  9.         //Ścieżka do pliku obrazu wejściowego i wyjściowego
  10.         //Plik powinien znajdować się tam gdzie .exe aplikacji
  11.         public static string sciezkaObrazu = $@"image.jpg";
  12.         public static string sciezkaZapisuNowegoObrazu = $@"newImage.jpg";
  13.  
  14.         public static void Main(string[] args)
  15.         {
  16.             Bitmap obraz = PobierzObraz(sciezkaObrazu);
  17.  
  18.             bool test = (obraz != null);
  19.             string wynikTestu = test ? "powodzeniem" : "niepowodzeniem";
  20.             System.Console.WriteLine($"Pobieranie obrazu: {sciezkaObrazu} zakończona {wynikTestu}");
  21.  
  22.             if (obraz == null) return;
  23.  
  24.             while (true)
  25.             {
  26.                 Console.WriteLine("Wybierz opcję:\n" +
  27.                     "[1] Rozjaśnij obraz\n" +
  28.                     "[2] Przyciemnij obraz\n" +
  29.                     "[3] Zamien kolory\n" +
  30.                     "[0] Wyjście");
  31.  
  32.                 int wybor = int.Parse(Console.ReadLine());
  33.  
  34.                 switch (wybor)
  35.                 {
  36.                     case 0:
  37.                         return;
  38.                     case 1:
  39.                         RozjasnijObraz(obraz, 50);
  40.                         break;
  41.                     case 2:
  42.                         RozjasnijObraz(obraz, -50);
  43.                         break;
  44.                     case 3:
  45.                         ZamienKolory(obraz);
  46.                         break;
  47.                     default:
  48.                         Console.WriteLine("Nieprawidlowa operacja");
  49.                         break;
  50.  
  51.                 }
  52.  
  53.             }
  54.         }
  55.  
  56.         public static void RozjasnijObraz(Bitmap img, int silaRozjasnienia)
  57.         {
  58.             for (int i = 0; i < img.Width; i++)
  59.             {
  60.                 for (int j = 0; j < img.Height; j++)
  61.                 {
  62.                     Color pixel = img.GetPixel(i, j);
  63.  
  64.                     Color nowyPixel = Color.FromArgb(
  65.                         ZetnijWartosc(pixel.R + silaRozjasnienia),
  66.                         ZetnijWartosc(pixel.G + silaRozjasnienia),
  67.                         ZetnijWartosc(pixel.B + silaRozjasnienia)
  68.                     );
  69.                     img.SetPixel(i,j,nowyPixel);
  70.                 }
  71.             }
  72.             System.Console.WriteLine("Operacja zakończona");
  73.  
  74.             img.Save(sciezkaZapisuNowegoObrazu);
  75.         }
  76.  
  77.         public static void ZamienKolory(Bitmap img)
  78.         {
  79.  
  80.  
  81.         }
  82.  
  83.         //Metoda zamienia wprowadzone przez użytkownika wartości RGB na obiekt klasy Color.
  84.         public static Color ZamienStringNaKolor(string rgb)
  85.         {
  86.             int r, g, b;
  87.  
  88.             try
  89.             {
  90.                 string[] kawalkiRGB = rgb.Split(',');
  91.                 r = int.Parse(kawalkiRGB[0]);
  92.                 g = int.Parse(kawalkiRGB[1]);
  93.                 b = int.Parse(kawalkiRGB[2]);
  94.                 return Color.FromArgb(r, g, b);
  95.             }
  96.             catch (Exception e)
  97.             {
  98.                 Console.WriteLine("Nieprawidłowo wprowadzony kolor. Ustawianie koloru domyślnego (czarny).");
  99.                 return Color.Black;
  100.             }
  101.         }
  102.  
  103.         // Metoda zabezpiecza wykroczenie poza wartości z zakresu 0-255 (RGB), obcinając zmienne poza skali.
  104.         public static int ZetnijWartosc(int wartosc)
  105.         {
  106.             if (wartosc < 0) return 0;
  107.             if (wartosc > 255) return 255;
  108.  
  109.             return wartosc;
  110.         }
  111.  
  112.         //Metoda pobiera obraz z podanej ścieżki i w przypadku problemu wyświetla komunikat.
  113.         public static Bitmap PobierzObraz(string sciezkaDoPliku)
  114.         {
  115.             if (File.Exists(sciezkaDoPliku) == false) return null;
  116.  
  117.             try
  118.             {
  119.                 Bitmap bitmapa = new Bitmap(sciezkaDoPliku);
  120.                 return bitmapa;
  121.             }
  122.             catch (Exception e)
  123.             {
  124.                 Console.WriteLine(e.Message);
  125.                 return null;
  126.             }
  127.         }
  128.     }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement