using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; namespace ConvertTo16x16 { class Count { public int Argb { get; set; } public Point Position { get; set; } public int Anzahl { get; set; } public Count(int Anzahl) { this.Anzahl = Anzahl; } public Count(int Argb, Point Position, int Anzahl) { this.Argb = Argb; this.Position = Position; this.Anzahl = Anzahl; } } class Program { static void Main(string[] args) { //C:\Users\zamk\Bilder\RickNice.jpg Console.Write("Geben sie den Bildnamen an: "); string bildName = Console.ReadLine(); Console.Write("Geben sie den Pfad an: "); string Pfad = Console.ReadLine(); //string Pfad = @"D:\Pictures16"; //string bildName = "RickNice.jpg"; int PixelAnzahl = 16; Bitmap bmp = new Bitmap($@"{Pfad}\{bildName}"); Bitmap outcome = new Bitmap(PixelAnzahl, PixelAnzahl); int Width = bmp.Width / PixelAnzahl; int Height = bmp.Height / PixelAnzahl; int counter = 0; Console.Write("Performing some task... "); using (var progress = new ProgressBar()) { for (int i = 0; i < PixelAnzahl; i++) { for (int j = 0; j < PixelAnzahl; j++) { List Argb = new List(); for (int x = Width * i; x < Width * (i + 1); x++) { for (int y = Height * j; y < Height * (j + 1); y++) { bool Exists = false; foreach (var item in Argb) { if (bmp.GetPixel(x, y).ToArgb() == item.Argb) //Zu switch case umbauen { Exists = true; item.Anzahl += 1; } } if (!Exists) { Argb.Add(new Count(bmp.GetPixel(x, y).ToArgb(), new Point(x, y), 1)); } counter++; double report = Convert.ToDouble(counter) / Convert.ToDouble(16 * 16 * Width * Height); progress.Report(report); } } Count BiggestItem = new Count(0); foreach (var item in Argb) { if (item.Anzahl > BiggestItem.Anzahl) { BiggestItem = item; } } outcome.SetPixel(i, j, Color.FromArgb(BiggestItem.Argb)); } } } outcome.Save($@"{Pfad}\16x16{bildName}"); } } }