c# - 将渐变中的颜色转换为 int 值
问题描述
我有一个颜色与渐变后的值相对应的图像。
我的渐变是这样的:
我的图像看起来像这样:
我搜索了一种方法来转换图像中的像素颜色以从此渐变中找到正确的值(在 C# 中)。例如:黑色像素的值为 320,白色像素的值为 16000,...
我找到了这篇文章,但答案与我正在寻找的相反...将 int 值转换为渐变中的颜色
任何人都可以提供一些帮助吗?
更新:
我找到/制作这段代码来重新调整最接近的颜色,但我不确定找到值的精度......
private void pictureBox1_Click(object sender, MouseEventArgs e)
{
var zone_data = img.GetPixel(e.Location.X, e.Location.Y);
var colors = new List<Color> { Color.Black, Color.SaddleBrown, Color.Purple, Color.Blue, Color.Cyan, Color.Green, Color.Yellow, Color.Orange, Color.Red, Color.Salmon, Color.LightGray, Color.White };
Console.WriteLine("Nearest color : " + colors[closestColor(colors, zone_data)].ToString());
}
public int closestColor(List<Color> colors, Color target)
{
var colorDiffs = colors.Select(n => ColorDiff(n, target)).Min(n => n);
return colors.FindIndex(n => ColorDiff(n, target) == colorDiffs);
}
public int ColorDiff(Color c1, Color c2)
{
return (int)Math.Sqrt((c1.R - c2.R) * (c1.R - c2.R)
+ (c1.G - c2.G) * (c1.G - c2.G)
+ (c1.B - c2.B) * (c1.B - c2.B));
}
解决方案
推荐阅读
- javascript - Javascript 中 Object.assign 复制的属性中缺少基元
- c# - 如何在 C# 中将图像上传到 Twitter API?
- javascript - 帆布梯形上的圆角
- django - 为什么我在 Django 中得到 [Errno 13] Permission denied: '/srv/hiim/media/Bookshelf.png'?
- c++ - 如何在 MFC 应用程序上实现多语言
- r - R中的非线性有界优化
- swift - 在自定义类数组的“ForEach”中没有更多上下文的表达式类型不明确
- c# - 如何从整数中获取枚举的显示名称
- c++ - 如何在Qt中正确使用Qt设计器表单类和c++类
- snowflake-cloud-data-platform - 在安全视图中,具有日期转换的过滤器不会将过滤器推送到视图