Farbspektren in Python
In diesem Tutorial wird die Methode zum Erstellen von Bildern mit Farbspektrum in Python erläutert.
Farbspektrum mit der PIL
-Bibliothek in Python
Die Zerlegung des weißen Lichts der Sonne in seine Bestandteile nach dem Durchgang durch ein Prisma wird als Farbspektrum bezeichnet. Es enthält den gesamten Wellenlängenbereich des Lichts, der mit bloßem Auge sichtbar ist. Mit anderen Worten, ein Farbspektrum enthält die Primärfarben (Rot, Grün und Blau) und alle Zwischenkombinationen der Primärfarben. Die Python Imaging Library PIL
wird für die Arbeit mit Bildern in Python verwendet. Mit der Bibliothek PIL
können wir ein Bild erstellen, das unser gewünschtes Farbspektrum enthält. Für dieses Tutorial werden wir das folgende Farbspektrum in einem Bild mit unseren gewünschten Abmessungen mit PIL
in Python nachbilden.
Das folgende Codebeispiel zeigt uns, wie wir mit der Bibliothek PIL
das gleiche Farbspektrum innerhalb eines Bildes in unseren gewünschten Abmessungen nachbilden.
from PIL import Image
def color_spectrum(height, width):
spectrum_ratio = 255 * 6 / width
red = 255
green = 0
blue = 0
colors = []
step = round(spectrum_ratio)
for i in range(0, height):
for j in range(0, 255 * 6 + 1, step):
if j > 0 and j <= 255:
blue += step
elif j > 255 and j <= 255 * 2:
red -= step
elif j > 255 * 2 and j <= 255 * 3:
green += step
elif j > 255 * 3 and j <= 255 * 4:
blue -= step
elif j > 255 * 4 and j <= 255 * 5:
red += step
elif j > 255 * 5 and j <= 255 * 6:
green -= step
colors.append((red, green, blue))
width2 = int(j / step + 1)
image = Image.new("RGB", (width2, height))
image.putdata(colors)
image.save("Picture2.png", "PNG")
if __name__ == "__main__":
create_spectrum(100, 300)
Ausgabe:
Wir haben das gleiche Farbspektrum wie im Beispielbild mit PIL
im obigen Code repliziert.
Wir haben ein RGB-Bild mit image = Image.new("RGB", (width2, height))
erstellt und mit image.putdata(colors)
mit 8-Bit-Farbwerten bestückt. Farben
ist hier eine Liste von Tupeln, wobei jedes Tupel drei Werte enthält (rot, grün und blau). Wie wir wissen, haben 8-Bit-Farben Werte im Bereich von 0 bis 255. Wir haben drei Variablen red
, green
und blue
initialisiert, die jeweils die Werte einer Primärfarbe repräsentieren. Das spectrum_ratio
wird verwendet, um die Berechnung zu vereinfachen. Es stellt dar, für wie viele Pixel wir dieselbe Farbe sehen. Unsere verschachtelte Schleife wird um einen step
inkrementiert, da nicht viele verschiedene Pixel mit derselben Farbe durchlaufen werden müssen. Die Variable step
wird berechnet, indem das spectrum_ratio
mit step = round(spectrum_ratio)
abgerundet wird.
Wie wir sehen können, beginnt das Farbspektrum mit Rot, allmählich beginnt die rote Farbe zu verblassen und die blaue Farbe erhöht ihre Intensität in der Nähe der Bildmitte. Wenn im Farbspektrum nur noch blaue Farbe übrig ist, beginnt die grüne Farbe zu intensivieren und die blaue Farbe beginnt langsam von links nach rechts zu verblassen. Wenn die gesamte blaue Farbe verschwunden ist und nur noch die grüne Farbe übrig ist, beginnt die Intensität der roten Farbe wieder zuzunehmen und die grüne Farbe beginnt zu verblassen. Das Bild endet, wenn die grüne Farbe vollständig verschwunden ist und wir nur noch die rote Farbe haben.
Die im vorigen Absatz beschriebene Logik wurde in unserer verschachtelten Schleife kodiert, und wir fügen die neuen RGB-Werte nach jeder Iteration mit colors.append((red, green, blue))
in unsere Liste colors
an. Die Originalbreite des Bildes wurde geändert, da wir das spectrum_ratio
auf step
gerundet haben. Wir haben width2
geschaffen, um dieser Veränderung gerecht zu werden. Nachdem wir die Farbwerte in unser neues Bild geschrieben haben, haben wir das Bild mit image.save("Picture2.png", "PNG")
gespeichert.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn