コード例 #1
0
        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);
        }