gpt4 book ai didi

c# - 从图像中获取配色方案

转载 作者:太空狗 更新时间:2023-10-29 17:35:31 24 4
gpt4 key购买 nike

我想开发一个类似 featured here 的基本工具.我将截取一些网页的屏幕截图,然后我希望从中截取前五种最流行的颜色,然后以某种方式决定这些颜色是否匹配。

我想用 C# 编写这个工具,经过一番研究后我发现了锁位。我的第一个想法是拍摄一张图像,然后获取每个像素的颜色,但我不确定这是否会给我想要的结果以及如何列出六个最流行的颜色列表。

这里的任何人都可以就如何创建一个程序来执行与上述程序类似的操作提供建议,该程序将接收图像并选择图像中使用的前五种颜色吗?

最佳答案

好吧.. 使用缩略图(16x16、32x32 等)并从中选择颜色

更新代码:

    private void button1_Click(object sender, EventArgs e)
{
int thumbSize = 32;
Dictionary<Color, int> colors = new Dictionary<Color, int>();

Bitmap thumbBmp =
new Bitmap(pictureBox1.BackgroundImage.GetThumbnailImage(
thumbSize, thumbSize, ThumbnailCallback, IntPtr.Zero));

//just for test
pictureBox2.Image = thumbBmp;

for (int i = 0; i < thumbSize; i++)
{
for (int j = 0; j < thumbSize; j++)
{
Color col = thumbBmp.GetPixel(i, j);
if (colors.ContainsKey(col))
colors[col]++;
else
colors.Add(col, 1);
}
}

List<KeyValuePair<Color, int>> keyValueList =
new List<KeyValuePair<Color, int>>(colors);

keyValueList.Sort(
delegate(KeyValuePair<Color, int> firstPair,
KeyValuePair<Color, int> nextPair)
{
return nextPair.Value.CompareTo(firstPair.Value);
});

string top10Colors = "";
for (int i = 0; i < 10; i++)
{
top10Colors += string.Format("\n {0}. {1} > {2}",
i, keyValueList[i].Key.ToString(), keyValueList[i].Value);
flowLayoutPanel1.Controls[i].BackColor = keyValueList[i].Key;
}
MessageBox.Show("Top 10 Colors: " + top10Colors);
}

public bool ThumbnailCallback() { return false; }

alt text http://lh3.ggpht.com/_1TPOP7DzY1E/S0uZ6GGD4oI/AAAAAAAAC5k/3Psp1cOCELY/s800/colors.png

关于c# - 从图像中获取配色方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2042789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com