Spectres de couleurs en Python

Muhammad Maisam Abbas 22 octobre 2021
Spectres de couleurs en Python

Ce tutoriel discutera de la méthode pour créer des images avec un spectre de couleurs en Python.

Spectre de couleurs avec la bibliothèque PIL en Python

La dispersion de la lumière blanche du soleil dans ses composants après avoir traversé un prisme s’appelle un spectre de couleurs. Il contient toute la gamme des longueurs d’onde lumineuses visibles à l’œil nu. En d’autres termes, un spectre de couleurs contient les couleurs primaires (rouge, vert et bleu) et toutes les combinaisons intermédiaires des couleurs primaires. La Python Imaging Library PIL est utilisée pour travailler avec des images en Python. Nous pouvons utiliser la bibliothèque PIL pour créer une image qui contient notre spectre de couleurs souhaité. Pour les besoins de ce tutoriel, nous allons recréer le spectre de couleurs suivant dans une image avec nos dimensions souhaitées en utilisant PIL en Python.

spectre de couleurs python avec la bibliothèque pil

L’exemple de code suivant nous montre comment recréer le même spectre de couleurs à l’intérieur d’une image de nos dimensions souhaitées avec la bibliothèque PIL.

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)

Production:

spectre de couleurs python avec la bibliothèque pil

Nous avons reproduit le même spectre de couleurs que celui indiqué dans l’exemple d’image avec PIL dans le code ci-dessus.

Nous avons créé une image RVB avec image = Image.new("RGB", (width2, height)) et l’avons remplie avec des valeurs de couleur 8 bits avec image.putdata(colors). Ici, colors est une liste de tuples où chaque tuple contient trois valeurs (rouge, vert et bleu). Comme on le sait, les couleurs 8 bits ont des valeurs allant de 0 à 255. Nous avons initialisé trois variables red, green, et blue, représentant chacune les valeurs d’une couleur primaire. Le spectrum_ratio est utilisé pour simplifier le calcul. Il représente pour combien de pixels voyons-nous la même couleur. Notre boucle imbriquée est incrémentée d’un step car il n’est pas nécessaire de parcourir de nombreux pixels différents ayant la même couleur. La variable step est calculée en arrondissant le spectrum_ratio avec step = round(spectrum_ratio).

Comme nous pouvons le voir, le spectre de couleurs commence par le rouge, progressivement la couleur rouge commence à s’estomper et la couleur bleue augmente son intensité près du milieu de l’image. Lorsqu’il ne reste que la couleur bleue dans le spectre de couleurs, la couleur verte commence à s’intensifier et la couleur bleue commence lentement à s’estomper de gauche à droite. Lorsque toute la couleur bleue a disparu et qu’il ne reste plus que la couleur verte, l’intensité de la couleur rouge recommence à augmenter et la couleur verte commence à s’estomper. L’image se termine lorsque la couleur verte a complètement disparu, et il ne nous reste plus que la couleur rouge.

La logique décrite dans le paragraphe précédent a été encodée dans notre boucle imbriquée, et nous ajoutons les nouvelles valeurs RVB dans notre liste colors après chaque itération avec colors.append((red, green, blue)). La largeur d’origine de l’image a été modifiée car nous avons arrondi le spectrum_ratio en step. Nous avons créé width2 pour faire face à ce changement. Après avoir écrit les valeurs de couleur dans notre nouvelle image, nous avons enregistré l’image avec image.save("Picture2.png", "PNG").

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

Article connexe - Python Graph

Article connexe - Python Color