亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c# 如何獲取點陣圖顏色

c# 如何獲取點陣圖顏色

C#
慕森卡 2018-12-25 14:08:59
不是像photoshop中的滴管那樣獲取顏色,而是批量從一組圖片里獲取各圖片的主要顏色,比如博客園的圖片,那么將獲取藍色,紅色,灰色。
查看完整描述

2 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

從位圖中將所有像素的顏色統計出來,然后根據各種顏色出現的次數做個排序。

 

        class PixelColor : IComparable<PixelColor>
        {
            private System.Drawing.Color _Color;
            private int _Count;

            public System.Drawing.Color Color
            {
                get
                {
                    return _Color;
                }

                set
                {
                    _Color = value;
                }
            }

            public int Count
            {
                get
                {
                    return _Count;
                }

                set
                {
                    _Count = value;
                }
            }

            public PixelColor(System.Drawing.Color color)
            {
                Color = color;
            }

            static public PixelColor operator ++(PixelColor pixelColor)
            {
                if (pixelColor != null)
                {
                    pixelColor.Count++;
                    return pixelColor;
                }
                else
                {
                    return null;
                }
            }

            public override string ToString()
            {
                return string.Format("Color={0} Count={1}", Color, Count);
            } 


            #region IComparable<PixelColor> Members

            public int CompareTo(PixelColor other)
            {
                return other.Count.CompareTo(this.Count);
            }

            #endregion
        }

        static private List<PixelColor> GetPixelColorFromImageFile(string fileName)
        {
            System.Drawing.Image image = System.Drawing.Image.FromFile(fileName);
            System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(image);

            Dictionary<System.Drawing.Color, PixelColor> _ColorDict = new Dictionary<System.Drawing.Color, PixelColor>();
            
            for(int x = 0; x < bitmap.Width; x++)
            {
                for(int y = 0; y < bitmap.Height; y++)
                {
                    System.Drawing.Color color = bitmap.GetPixel(x, y);

                    if (!_ColorDict.ContainsKey(color))
                    {
                        _ColorDict.Add(color, new PixelColor(color));
                    }

                    _ColorDict[color]++;
                }
            }

            List<PixelColor> pixelColorList = new List<PixelColor>(); 
            
            foreach (PixelColor pixelColor in _ColorDict.Values)
            {
                pixelColorList.Add(pixelColor);
            }

            pixelColorList.Sort();

            return pixelColorList;
        }

 

調用代碼

            List<PixelColor> pixelColorList = GetPixelColorFromImageFile(@"d:\test\logo.gif");

            
            for(int i = 0 ; i < 10; i++)
            {
                Console.WriteLine(pixelColorList[i]);
            }


查看完整回答
反對 回復 2018-12-29
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

eaglet很牛啊,不過偶還沒接觸過這些,只簡單用過discuz的顏色拾取器代碼

TimChiang不妨去試試,看是怎么實現的.

看源代碼控件


查看完整回答
反對 回復 2018-12-29
  • 2 回答
  • 0 關注
  • 1009 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號