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 string bildName = "RickNice.jpg"; int PixelAnzahl = 16; Bitmap bmp = new Bitmap($@"D:\Pictures16\{bildName}"); // Bitmap outcome = new Bitmap(PixelAnzahl, PixelAnzahl); int Width = bmp.Width / PixelAnzahl; int Height = bmp.Height / PixelAnzahl; 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)); } } } 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($@"D:\Pictures16\16x16{bildName}"); } } }