1
如何檢查rgb或十六進制值是否在特定顏色範圍內?最好用紅寶石。檢查顏色是否在特定顏色範圍內
我使用ruby和rmagick從圖像中提取顏色(量化和color_histogram),然後將這些顏色存儲在數據庫中。如果有人搜索了類似的顏色(十六進制或rgb),我希望能夠返回該顏色。
例如如果有人搜索#f4f4f4,我想返回#f5f5f5,#f3f3f3和所有其他關閉的十六進制值。
如何檢查rgb或十六進制值是否在特定顏色範圍內?最好用紅寶石。檢查顏色是否在特定顏色範圍內
我使用ruby和rmagick從圖像中提取顏色(量化和color_histogram),然後將這些顏色存儲在數據庫中。如果有人搜索了類似的顏色(十六進制或rgb),我希望能夠返回該顏色。
例如如果有人搜索#f4f4f4,我想返回#f5f5f5,#f3f3f3和所有其他關閉的十六進制值。
如果將RGB視爲以R,G和B爲軸的三維空間,則可以將「關閉顏色」定義爲立方體或圍繞某種顏色的球體,並返回其中的所有顏色(或檢查對於給定的顏色,如果足夠接近)。對於Formulars是非常簡單的:
Original color R, G, B
Cube with side length L around it:
All colors between (R - L/2, G - L/2, B - L/2) and (R + L/2, G + L/2, B + L/2)
Sphere with radius R around it:
New color R_new, G_new, B_new is inside if
delta_r * delta_r + delta_g * delta_g + delta_b * delta_b < R * R
where
delta_r = abs(R - R_new)
delta_g = abs(G - G_new)
delta_b = abs(B - B_new)
使用球體,而不是一個立方體是「正確」的方式,但它不會有太大的小的差異和立方體裏面的顏色是有點更容易計算。
我愛你,男人。 – colourandcode 2011-03-17 01:04:55