Farbspektren in Python

Muhammad Maisam Abbas 15 Februar 2024
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.

Python-Farbspektrum mit der Pil-Bibliothek

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:

Python-Farbspektrum mit der Pil-Bibliothek

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.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

Verwandter Artikel - Python Graph

Verwandter Artikel - Python Color