Ich habe eine Farbe UIColor(displayP3Red: 1, green: 0, blue: 0.8, alpha: 1)
. Ich möchte eine entsättigte Version erstellen - mit dem gleichen Farbton und der gleichen Helligkeit, aber weniger Sättigung, wie die Hälfte der Sättigung des Originals. Wie mache ich das?Wie erstelle ich eine entsättigte Version einer Display P3-Farbe?
1
A
Antwort
0
extension UIColor {
// Calling this with 0.5 as argument returns a color whose saturation is 50% of that of the receiver.
func desaturatedBy(fraction: CGFloat) -> UIColor {
var hue: CGFloat = 0
var saturation: CGFloat = 0
var brightness: CGFloat = 0
var alpha: CGFloat = 0
let success = getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha)
assert(success)
saturation *= fraction
return UIColor(hue: hue, saturation: saturation, brightness: brightness, alpha: alpha)
}
}
Das funktioniert, weil th Der Getter gibt HSB im erweiterten sRGB-Farbraum zurück, und der Initialisierer von UIColor nutzt HSB auch im erweiterten sRGB-Farbraum. Wir müssen also keine Farbraumkonvertierung durchführen.
0
Es sollte einfach sein, vorausgesetzt, Sie können die Normalized Primary Matrix (NPM) von DCI-P3 berechnen: die mittlere Reihe des NPM repräsentiert die Luminanzfaktoren. Ich werde zeigen diese Colour verwenden, es wird davon ausgegangen, dass Sie lineare Werte verwenden:
import numpy as np
import colour
# Computing the sRGB Luminance Equation, you should be familiar with the
# resulting Luminance factors.
print(colour.RGB_luminance_equation(
colour.sRGB_COLOURSPACE.primaries,
colour.sRGB_COLOURSPACE.whitepoint))
# Y = 0.212639005872(R) + 0.715168678768(G) + 0.0721923153607(B)
# Computing the DCI-P3 Luminance Equation.
print(colour.RGB_luminance_equation(
colour.DCI_P3_COLOURSPACE.primaries,
colour.DCI_P3_COLOURSPACE.whitepoint))
# Y = 0.209491677913(R) + 0.721595254161(G) + 0.0689130679262(B)
# Computing Luminance of given RGB colour, this is assuming it is representing linear values.
DCI_P3_LUMINANCE_FACTORS = np.array([0.209491677913, 0.721595254161, 0.0689130679262])
RGB = np.array([1.0, 0.0, 0.8])
Y = np.dot(RGB, DCI_P3_LUMINANCE_FACTORS)
print(Y)
# 0.264622132254
Mit Y die Helligkeit des gegebenen Farbe darstellt, wenn man bei 50% bis desaturate wollte man so etwas tun könnte:
Lerp (RGB, [Y, Y, Y], 0,5)
Verwandte Themen
- 1. Wie erstelle ich eine mobile Version?
- 2. Wie erstelle ich eine zweite Version der aktuellen App?
- 3. Wie erstelle ich eine Offline-Version meiner Website?
- 4. Wie erstelle ich eine Instanz einer Klasse?
- 5. Wie erstelle ich Homebrew Flasche für alte Version auf einer neuen Mac OS Version?
- 6. Wie erstelle ich eine Tastenkombination für SublimeREPL?
- 7. Wie erstelle ich eine Mehrfachfrage?
- 8. Wie erstelle ich eine Transaktionsnummer?
- 9. Wie erstelle ich eine Kontoverknüpfung?
- 10. Wie erstelle ich eine Verbindung?
- 11. Wie erstelle ich eine MKMapView?
- 12. Wie erstelle ich eine Gemfile?
- 13. Wie erstelle und erstelle ich eine zufällige IP-Adresse - Python
- 14. Wie erstelle ich eine Stoppuhr in C#?
- 15. Wie erstelle ich eine Riak Suchabfrage?
- 16. Wie erstelle ich eine einfache benutzerdefinierte Ansicht?
- 17. Wie erstelle ich gestapelte Diagramme mit Chart.js Version 2.0.0-beta
- 18. Wie erstelle ich eine TreeTable in DebugSession
- 19. Wie erstelle ich eine dynamische Domain?
- 20. Wie erstelle ich eine 404-Seite?
- 21. Wie erstelle ich eine Datenbank in Android?
- 22. Wie erstelle ich eine Hauptimportdatei in ES6?
- 23. Wie erstelle ich eine wiederverwendbare Dropdown-Liste
- 24. Wie erstelle ich eine kommagetrennte Zeichenfolge von einer ArrayList?
- 25. Wie erstelle ich eine Textverbindung aus einer String-Variablen?
- 26. Wie erstelle ich eine Frühlingsbohne einer inneren Klasse?
- 27. Wie erstelle ich eine Ressourcenkontrolleur-Klassifiziererfunktion basierend auf einer Datenbankrolle?
- 28. Wie erstelle ich eine PDF-Datei in einer UWP-App?
- 29. Wie erstelle ich eine Liste aus einer Menge abgeleiteter Klassen?
- 30. Wie erstelle ich eine Chronometer in einer Benachrichtigung Android?
Gibt es eine Möglichkeit, dies in iOS zu tun? Vielen Dank. –
Sehr wahrscheinlich, was Sie wirklich brauchen, ist ein Punktprodukt und eine lineare Interpolation. –
BTW, Python signalisiert einen Fehler, der besagt, dass Farbe in der Importfarbe nicht gefunden wird. Welches MacPorts-Modul muss ich installieren? Ich benutze Python 3.6. Ich habe bereits numpy installiert, weil das auch einen Fehler gab. Vielen Dank. –