我需要HSL
顏色值轉換爲RGB
,或與Powershell的更精確HSL值到System.Drawing.Color
對象。 在其他程序中有幾種解決方案 - 語言在那裏(如LINK)。但雖然看起來很簡單,但我沒有把它轉換成Powershell。Powershell的:HSL爲RGB
Function HSLtoRGB ($H,$S,$L) {
$H = [double]($H/360)
$S = [double]($S/100)
$L = [double]($L/100)
if ($s -eq 0) {
$r = $g = $b = $l
}
else {
if ($l -lt 0.5){
$q = $l * (1 + $s)
}
else {
$q = $l + $s - $l * $s
}
$p = (2 * $L) - $q
$r = (Hue2rgb $p $q ($h + 1/3))
$g = (Hue2rgb $p $q $h)
$b = (Hue2rgb $p $q ($h - 1/3))
}
$r = [Math]::Round($r * 255)
$g = [Math]::Round($g * 255)
$b = [Math]::Round($b * 255)
return ($r,$g,$b)
}
function Hue2rgb ($p, $q, $t) {
if ($t -lt 0) { $t++ }
if ($t -gt 0) { $t-- }
if ($t -lt 1/6) { return ($p + ($q + $p) * 6 * $t) }
if ($t -lt 1/2) { return $q }
if ($t -lt 2/3) { return ($p + ($q - $p) * (2/3 - $t) * 6) }
return $p
}
HSLtoRGB 63 45 40 # result should be R 145 G 148 B 56
「我沒有把它轉換成Powershell」 - 你到目前爲止嘗試過什麼?它不符合你的期望? –
您鏈接到的答案中的示例函數在移植到PowerShell btw時工作得很好 –
是的,忘記了代碼。 :)我有幾條線和一條我根本無法翻譯的疑惑(見代碼)。主要是我不知道一些運營商的意思。 – Moss