从图片上获取颜色的RGB值

背景

对于我这种没有专业美工人员支持的开发者来说,从网上寻找参考图是必须的,这样往往就会遇到一个问题:这个图片各个部分的颜色代码是多少?这里介绍一些我得经验供大家参考。

方案

从图片上获取颜色的RGB值_第1张图片

就比如csnd的图片,我想知道这几个英文字母的颜色代码是多少,那么我们把这个图片复制或者剪切一部分到我们的剪切板中。

1、win10以上的桌面系统任务栏都有这个搜索的按钮,点开它,搜索"画图"(它是我们电脑自带的绘图软件)

在这里插入图片描述
从图片上获取颜色的RGB值_第2张图片

2、进入绘图软件

从图片上获取颜色的RGB值_第3张图片

3、此时将我们的图片复制进去

从图片上获取颜色的RGB值_第4张图片

4、点击绘图软件上的颜色选取器按钮,然后点击你想要获取颜色代码的位置

从图片上获取颜色的RGB值_第5张图片

5、点击完毕后颜色1按钮的颜色就是你想要获取的颜色

从图片上获取颜色的RGB值_第6张图片

6、点击编辑颜色按钮,就获取其rgb值

从图片上获取颜色的RGB值_第7张图片

7、转换成我们想要的颜色代码

由于我是用C#编程,可以使用Color的构造方法从rgb数值获取该颜色,但是可能有的同学需要十六进制的代码,这里我编写了一个C++转换程序,以供参考吧。

#include
using namespace std;

const char numberSet[]="0123456789ABCDEF";

void exchange(int colorNumber){
	int high=colorNumber/16;
	int low=colorNumber%16;
	cout<<numberSet[high]<<numberSet[low];
}

int right(int colorNumber){
	if(colorNumber>=0&&colorNumber<=255){
		return 1;
	}
	return 0;
}

int main(){
	
	int red;
	int green;
	int blue;
	
	cout<<"请依次输入红,绿,蓝的数值代号:";
	
	cin>>red>>green>>blue;
	
	cout<<"#";
	
	if(right(red)){
		exchange(red);
	}else{
		cout<<"红有误";
		return 0;
	}
	
	if(right(green)){
		exchange(green);
	}else{
		cout<<"绿有误";
		return 0;
	}
	
	if(right(blue)){
		exchange(blue);
	}else{
		cout<<"蓝有误";
		return 0;
	}
	
	return 0;
} 

你可能感兴趣的:(开发工具,c++,c#)