Мне нужно преобразовать HSL
цветовые значения RGB
, или быть более точным HSL-значения в System.Drawing.Color
объекта с Powershell. Есть несколько решений в других прог-языках (например, 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