public static IEnumerable <ColorCount> ListAllColorsByMostCommon(Bitmap bitmap) { Dictionary <Color, long> colors = new Dictionary <Color, long>(); using (DisposableBitmapData bmpData = bitmap.LockRead(PixelFormat.Format24bppRgb)) { BitmapData data = bmpData; foreach (PixelPoint p in data.ForEachPixel()) { Color color = p.Color; if (colors.TryGetValue(color, out long count)) { colors[color] = count + 1; } else { colors.Add(color, 1); } } } return(colors.OrderByDescending(x => x.Value).Select(p => (ColorCount)p)); //.Select(p => p.Key); }