我這個小工具是在我修改這裡的版型時龜毛地弄出來的(我個人時常都很龜毛醬,總有些莫名的堅持),因為我不滿意繪圖軟體的調整色相功能,包括 Photoshop 、PhotoLine 32 等。使用方法如下。
全貌
一開始網頁就在 autoChange 為 on 的狀態,按一下該按鈕會轉為 off 狀態,再按一下轉回 on 狀態,在 on 狀態,只要有一個或一組欄位的數值改變了,其他相應欄位亦會跟著改變。
autoChange 在 off 狀態
以下解說以 autoChange 在 on 狀態為主。
如果有一個十六進位顏色碼相對應的色相、飽和度、luma(可譯造「亮度」,為了與其他術語區分,這裡不譯),只要把該色碼填在下面的任一個「(in hex) color」欄位,再按 tab 鍵或用滑鼠點網頁其他地方,相應的色相(hue)、飽和度(saturation)和 luma 就會顯示在相應的欄位。
為了做到 100% 準確,所以這裡以分數(fraction)計數,我夠龜毛吧!(自豪貌 XD
為了方便理解,也有小數(decimal)顯示。在顯示數值的同時,也會在上方顯示相應的顏色。
這裡以色碼 #669922 為例。

填上色碼後顯示的樣子
填多一欄,以便改色相時有所對照
arc hue 和 chord hue 的分別(兩個皆為我自創的名詞):

圖修改自 http://en.wikipedia.org/wiki/File:Hsv-hexagons-to-circles.svg ,使用 cc-by-sa-3.0 授權。
因為計算 arc hue 要使用到三角函數,會變成無理數,所以無法以分數直接表示。
如果想改變色相,例如加 120 度,由綠色轉做藍色,那麼先選 single field change (因為要單單改 hue 欄位其他欄位就跟著變), hue 欄位填上 1440 / 7 (因為 400 + 120 * 7 = 1440)。

填上 1440 / 7 後的模貌
大家是否覺得該顏色只是改變了色相,其他沒有改變?是就成功了。
基本功能解說完畢,到進階一點的。
嫌逐個色碼填寫麻煩?可以一次過在「many colors」欄位填寫。

在 many colors 一次過填色碼。

色相加120度後的模貌
在自動模式下,可以選擇「group change」或是「single field change」,「group change」指填滿「red」、「green」 和「blue」三個欄位或填滿「chord hue」、「saturation」、「luma」三個欄位後其他欄位才相應改變數值,「single field change」指填了任一個欄位後其他欄位就立即相應改變。
如果不喜歡太自動,可以按一下 autoChange 按鈕,讓 autoChange 在 off 狀態。以下以 autoChange 在 off 狀態作說明。在「(in hex) color」欄位填上色碼後,按右上角的「hex color」按鈕。在「chord hue」欄位填上色相值後,按「HS luma」按鈕。

手動模式要按的按鈕。
這工具除了可以顯示 HS luma (hue / saturation / luma) 色彩空間的色彩模型外,也可以顯示 HSV (hue / saturation / value)色彩空間和 HSL (hue / saturation / lightness)色彩空間的色彩模型。在顯示 HS luma 色彩模型的時候,還有參數可以調整。根據英文維基百科的說明,HSI (hue / saturation / intensity)模型(亦即 HS luma 模型的特例)的飽和度的原本定義並不使模型 fill 在一個 cylinder (圓筒)中,但這裡經過我自行研究出的算式,HS luma 模型可以填滿在一個圓筒中。
不論使用哪個色彩模型,色相值的計法都是一樣的,但飽和度卻不一樣了(一樣計法的是 chroma值),因為飽和度是依據 luma 、value 或 lightness 等值和 chroma 值計算而來,而每個色彩模型的不同就在於 luma 、 value 或 lightness 等的計法是不同的。
luma 的計法是: luma = r * red + g * green + b * blue (red 、green 、blue 各大於或等於 0 及小於或等於 1 ,這裡是由色碼的紅、綠、藍三個成份除 255 得來 ),在這個工具,可以調整 r 、 g 、b 的數值,當然是份數值,這樣才夠龜毛 XD ,這裡預設使用 GIMP 軟體的 Luminosity 的數值,資料來源 http://docs.gimp.org/2.6/en/gimp-tool-desaturate.html ,即是計算灰階(grayscale)所使用的公式。
這工具的限制:
1、人眼看到的亮度實際上不是線性組合,但這裡的公式算是很好的近似了,大家看效果就可以知道了。
2、使用了份數作計算,雖然使用了最大公因數的方法,但數值太大依然會溢位,始終我不夠龜毛,沒有使用 Bignum 實作 Rational 。
3、逐堆圖素改圖太麻煩了,我當然又寫了小工具完成這工作,只是該工具未粉飾過,大家未必合用。
該未粉飾過的小工具的使用方法:
先把工具網頁和圖檔放在同一個資料夾。

先把工具網頁和圖檔放在同一個資料夾。

開啟原始檔 convert_hue.html ,在圖中的位置換上你自己的圖檔的檔名,之後存檔。

用 Google 瀏覽器瀏覽 convert_hue.html ,用滑鼠在右邊的圖檔按右鍵。

在右鍵選單中按「另存影像為(V)...」。
convert_hue.html 使用了 HTML5 Canvas 的進階功能,沒有測試過 firefox 支不支援。因為安全問題,所以現時只能在本地端使用。
未來將會增加的機能(無責任預告 XD ):
color_model_conversion.html 使用 BigInteger 。
convert_hue.html 做到可以線上使用並粉飾一輪。
線上應用服務:
原始碼:
convert_hue.html :
參考資料:

