2011-03-29 47 views
10

我有一個客戶選擇顏色的應用程序。 我不能讓這種顏色太淺。 有沒有辦法看到這一點,以防止客戶選擇太亮的顏色?如何查看rgb顏色是否太淺

非常感謝!


的情況下太輕是一種顏色幾乎是白色的....我有一個網站有一個白色的背景,並且用戶可以選擇通過一個jQuery插件的顏色。

我想允許用戶選擇他想要的顏色,但不能太輕。

+1

您是否使用插件進行顏色選擇?這是你需要在問題中包含的那種重要信息。 – 2011-03-29 19:18:19

+3

將顏色從RGB轉換爲HSV(色調,飽和度,值)並檢查S和V值如何?這只是一個黑暗中的鏡頭,但這是我第一次嘗試 – 2011-03-29 19:18:59

+3

你有沒有「太輕」的定義? – gailbear 2011-03-29 19:19:13

回答

23

如果您正在尋找的對比是check out this article

他們展示這樣的功能基礎上任意顏色選擇文本顏色:

function isTooLightYIQ(hexcolor){ 
    var r = parseInt(hexcolor.substr(0,2),16); 
    var g = parseInt(hexcolor.substr(2,2),16); 
    var b = parseInt(hexcolor.substr(4,2),16); 
    var yiq = ((r*299)+(g*587)+(b*114))/1000; 
    return yiq >= 128; 
} 

// usage: 
element.style.color = isTooLightYIQ('ff0045') ? '#000' : '#fff'; 

上述功能,如果顏色太淺白的文字是對這種顏色的頂部可讀返回true 。

+0

感謝您分享這段精彩的代碼 – Zl3n 2016-05-07 08:24:34

0

相對於「太輕」?一些圖像?純白?一些灰色的陰影?最簡單的方法是確保其中一個R,G,B成員值高於某個閾值,但如果用戶選擇(128,0,0)並將其粘貼到圖像上(127 ,0,0) - 差異是(1,0,0),在大多數顯示器上不可見或幾乎不可能發現。

-1

你不是太具體,但假設你使用Javascript,

var v = Math.round((r+g+b)/3)並檢查其是否低於某一閾值?

此外,顏色是什麼形式? RGB? HSL?十六進制?