Wie ein Bildschirm Farben mischt
Eine Farbe auf dem Bildschirm besteht aus drei Zahlen: der Menge an Rot, an Grün und an Blau. Jede Zahl liegt zwischen 0 und 255, und aus diesen drei Lichtern entsteht jede Farbe, die Sie sehen.
Mit denselben Zahlen lassen sich zwei Farben überblenden, etwa ein halbtransparentes Fenster über einem Hintergrund. Das rechnen Sie in dieser Lektion selbst.
Am Ende dieser Lektion
Notiz
Ich kann zwei Farben mit einer Deckkraft zu einer neuen Farbe mischen.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Kanal | eine der drei Zahlen einer Farbe |
| RGB | Rot, Grün und Blau als drei Kanäle |
| Deckkraft | wie stark die vordere Farbe zählt, in Prozent |
| Mischen | aus zwei Farben eine neue berechnen |
| Alphawert | der Fachbegriff für die Deckkraft |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Farbe besteht aus drei Zahlen
Jedes Pixel speichert drei Kanäle: Rot, Grün und Blau, kurz RGB. Ein Kanal hat 8 Bit, also 256 mögliche Werte von 0 bis 255. Null heißt, das Licht ist aus, 255 heißt volle Helligkeit.
Der Bildschirm addiert Licht. Rot und Grün zusammen ergeben darum Gelb, und alle drei Kanäle voll ergeben Weiß.
Beispiel: fünf Farben als Zahlen
| Farbe | Rot | Grün | Blau |
|---|---|---|---|
| Schwarz | 0 | 0 | 0 |
| Weiß | 255 | 255 | 255 |
| Rot | 255 | 0 | 0 |
| Gelb | 255 | 255 | 0 |
| Mittelgrau | 128 | 128 | 128 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Das Lab mischt Rot und Blau
Der Befehl legt ein Bild mit 5 Pixeln an. Das erste ist reines Rot, das letzte reines Blau, dazwischen mischt er in vier gleichen Schritten.
Er gibt die fünf Farben aus: von (255, 0, 0) über (127, 0, 127), ein Violett, bis (0, 0, 255). Er speichert das Bild vergrößert als mischung.png: ein Streifen, der von Rot über Violett nach Blau läuft.
Einen Verlauf von Rot nach Blau zeichnen
docker exec jupyter python3 -c "from PIL import Image; b = Image.new('RGB', (5, 1)); [b.putpixel((i, 0), tuple((a * (4 - i) + c * i) // 4 for a, c in zip((255, 0, 0), (0, 0, 255)))) for i in range(5)]; b.resize((100, 20), Image.NEAREST).save('mischung.png'); print([b.getpixel((i, 0)) for i in range(5)])"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Mischen heißt: von jeder Farbe einen Anteil nehmen
Das Beispiel legt Rot (200, 0, 0) über Blau (0, 0, 200). Bei einer Deckkraft von 25 Prozent zählt die vordere Farbe zu einem Viertel und die hintere zu drei Vierteln. Das gilt für jeden Kanal einzeln.
Neuer Kanal gleich vorne mal Deckkraft plus hinten mal (100 minus Deckkraft), alles durch 100. Ein Plus von 50 vor dem Teilen rundet auf die nächste ganze Zahl, denn // schneidet sonst ab.
Beispiel: Rot über Blau, fünf Deckkräfte
| Deckkraft | Rot | Grün | Blau |
|---|---|---|---|
| 0 Prozent | 0 | 0 | 200 |
| 25 Prozent | 50 | 0 | 150 |
| 50 Prozent | 100 | 0 | 100 |
| 75 Prozent | 150 | 0 | 50 |
| 100 Prozent | 200 | 0 | 0 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Einen Kanal mischen und rechnen lassen
# Ein Kanal: vorne 200, hinten 0, Deckkraft 25 Prozent.
vorne = 200
hinten = 0
alpha = 25
kanal = (vorne * alpha + hinten * (100 - alpha) + 50) // 100
print("Gemischter Kanal:", kanal)
# Ändern Sie alpha auf 50 und starten Sie erneut.
Pillow zählt die Deckkraft von 0 bis 255
Ein Bild mit Transparenz hat einen vierten Kanal, den Alphawert. Pillow zählt ihn von 0 bis 255, nicht in Prozent. 64 von 255 sind etwa 25 Prozent.
Der Befehl legt ein rotes Pixel mit Alpha 64 über ein blaues Pixel und lässt Pillow mischen. Das Ergebnis ist (50, 0, 150, 255), dieselbe Mischung wie die Formel für 25 Prozent.
Pillow über Blau legen lassen
docker exec jupyter python3 -c "from PIL import Image; v = Image.new('RGBA', (2, 2), (200, 0, 0, 64)); h = Image.new('RGBA', (2, 2), (0, 0, 200, 255)); print(Image.alpha_composite(h, v).getpixel((0, 0)))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele denken, Rot und Grün ergäben Braun, wie bei Wasserfarben. Ein Bildschirm mischt aber Licht, und Licht addiert sich. Rot und Grün zusammen ergeben auf dem Bildschirm Gelb, (255, 255, 0).