天天看點

從圖檔上擷取顔色的RGB值背景方案

背景

對于我這種沒有專業美勞工員支援的開發者來說,從網上尋找參考圖是必須的,這樣往往就會遇到一個問題:這個圖檔各個部分的顔色代碼是多少?這裡介紹一些我得經驗供大家參考。

方案

從圖檔上擷取顔色的RGB值背景方案

就比如csnd的圖檔,我想知道這幾個英文字母的顔色代碼是多少,那麼我們把這個圖檔複制或者剪切一部分到我們的剪切闆中。

1、win10以上的桌面系統工作列都有這個搜尋的按鈕,點開它,搜尋"畫圖"(它是我們電腦自帶的繪圖軟體)

從圖檔上擷取顔色的RGB值背景方案
從圖檔上擷取顔色的RGB值背景方案

2、進入繪圖軟體

從圖檔上擷取顔色的RGB值背景方案

3、此時将我們的圖檔複制進去

從圖檔上擷取顔色的RGB值背景方案

4、點選繪圖軟體上的顔色選取器按鈕,然後點選你想要擷取顔色代碼的位置

從圖檔上擷取顔色的RGB值背景方案

5、點選完畢後顔色1按鈕的顔色就是你想要擷取的顔色

從圖檔上擷取顔色的RGB值背景方案

6、點選編輯顔色按鈕,就擷取其rgb值

從圖檔上擷取顔色的RGB值背景方案

7、轉換成我們想要的顔色代碼

由于我是用C#程式設計,可以使用Color的構造方法從rgb數值擷取該顔色,但是可能有的同學需要十六進制的代碼,這裡我編寫了一個C++轉換程式,以供參考吧。

#include<iostream>
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;
} 
           

繼續閱讀