Frage

Ich versuche etwas zu konvertieren HSL Wert zu RBG mit Data.Colour -Modul. Hackage Doc sagte das Hue ist immer im Bereich 0-360. Aber es gibt jetzt irgendwelche Bereiche von Saturation und Lightness Werte. Sind sie in [0,100] oder in [0,1] Bereichen?

Ich nehme an, diese erste Variante ist richtig, scheint es aber nicht.

λ> hsl 100 50 50
RGB {channelRed = 866.6666666666692, channelGreen = -2400.0, channelBlue = 2500.0}

Ich habe versucht, den Bereich [0, 1] für Sättigung und Leichtigkeit zu verwenden.

λ> fmap truncate . (\(h,s,l) -> hsl h s l) $ (0,0,0)
RGB {channelRed = 0, channelGreen = 0, channelBlue = 0}
it :: RGB Integer

Deshalb fange ich an, das nur zu überlegen Saturation sollte a sein Double in [0,1].

Zum Beispiel haben wir einen Farbwert in HSL Format.

λ> let c = (34.0,0.54,68.0)
c :: (Double, Double, Double)

Als wir es in konvertieren RGB und alle Werte abschneiden

λ> fmap truncate . (\(h,s,l) -> hsl h s l) $ c
RGB {channelRed = 31, channelGreen = 63, channelBlue = 104}

Aber (31,63,104)::RGB ist (214,54,26)::HSL wie Einige Online-Farbkonverter sagte.

Was mache ich falsch?

War es hilfreich?

Lösung

Es sieht so aus, als ob das Paket den Bereich verwendet [0, 1] sowohl für Leichtigkeit als auch für Sättigung, aber beachten Sie, dass er diesen Bereich auch für RGB -Werte verwendet und nicht [0, 255] Wie Sie annehmen scheinen. Unter Berücksichtigung dessen bekomme ich (fast) die erwarteten Werte:

> fmap (truncate . (* 255)) $ hsl 214 0.54 0.26
RGB {channelRed = 30, channelGreen = 61, channelBlue = 102}

Andere Tipps

Also habe ich das beide herausgefunden, dass beide Saturation und Lightness Der Wert sollte im Bereich [0,1] liegen.

λ> fmap (round . (255*)). (\(h,s,l) -> hsl h s l) $ (34.0,0.54,0.68)
RGB {channelRed = 217, channelGreen = 179, channelBlue = 129}
it :: RGB Integer

Es macht einen Sinn, weil (217,179,129)::RGB Wert ist gleich zu (34,54,68)::HSL.

Vielleicht wäre es hilfreich, diese Einschränkungen in den Dokumenten hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top