有誰知道從linearRGB顏色(而不是sRGB顏色)獲取HSL的方法嗎?我看到很多sRGB < - > HSL轉換,但對於linearRGB < - > HSL沒有任何影響。不確定它是否具有相同的轉換和微小的調整,但我會很感激任何人可能對此有所瞭解。線性化RGB與線性化sRGB(取[0,255]並使其成[0,1])不同。從/到sRGB的線性RGB轉換爲http://en.wikipedia.org/wiki/SRGB。在VBA中,這將是表示(以線性sRGB值[0,1]取):LinearRGB轉換爲/從HSL
Public Function sRGB_to_linearRGB(value As Double)
If value < 0# Then
sRGB_to_linearRGB = 0#
Exit Function
End If
If value <= 0.04045 Then
sRGB_to_linearRGB = value/12.92
Exit Function
End If
If value <= 1# Then
sRGB_to_linearRGB = ((value + 0.055)/1.055)^2.4
Exit Function
End If
sRGB_to_linearRGB = 1#
End Function
Public Function linearRGB_to_sRGB(value As Double)
If value < 0# Then
linearRGB_to_sRGB = 0#
Exit Function
End If
If value <= 0.0031308 Then
linearRGB_to_sRGB = value * 12.92
Exit Function
End If
If value < 1# Then
linearRGB_to_sRGB = 1.055 * (value^(1#/2.4)) - 0.055
Exit Function
End If
linearRGB_to_sRGB = 1#
End Function
我試圖從HSL_to_RGB線性RGB值標準RGB_to_HSL程序發送和退了出去,但它不起作用。也許是因爲目前的HSL < - > RGB算法解釋了伽瑪校正,而線性RGB不是伽瑪校正 - 我不知道。我所看到的幾乎沒有提及,這是可以完成的,除了兩個:
- 參考上 http://en.wikipedia.org/wiki/HSL_and_HSV#cite_note-9 (編號爲第10項)。
- @ http://code.google.com/p/grafx2/issues/detail?id=63#c22 一個開源項目 一個Grafx2引用其中的貢獻者指出 他做線性RGB < - > HSL 轉換,並在爲.diff文件提供的附件中他的評論一些C代碼 (我真的不能閱讀:()
我的意圖是:
- 從sRGB的發送(例如,
FF99FF
(R=255, G=153, B=255
))至 線性RGB(R=1.0, G=0.318546778125092, B=1.0
)- 使用上面的代碼(例如, 的G = 153將被線性從
sRGB_to_linearRGB(153/ 255)
獲得 RGB)
- 使用上面的代碼(例如, 的G = 153將被線性從
- 到HSL
- 修改/調製飽和度 350%
- 從HSL-> Linear RGB-> sRGB發回,結果爲
FF19FF
(R=255, G=25, B=255
)。
使用從.NET如.getHue
從System.Drawing.Color
可用的功能,在上述任意HSL值的100%調製,因此需要進行線性RGB任何sRGB空間不工作,以代替sRGB而發送。
400代表賞金!! ??哇靠! – 2012-11-17 20:55:44