Correction de l'activité AndyWarhol

	
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#-------------------------------------------------------------------------------
# Nom du programme : Traitement d'image à la manière d'Andy Warhol
# Version : Version Python
#
# Auteur: Bertrand Yann
# date de création : Mardi 12 mars 2019
#-------------------------------------------------------------------------------

from PIL import Image        #Importe le module Image de la bibliothèque PIL


def CreationImage(image0):   # Création de la fonction qui permet de créer l'image demandée
    dimx = image0.size[0]    # largeur de l'image
    dimy = image0.size[1]    # hauteur de l'image 
    image1 = Image.new('RGB', (3*dimx, 4*dimy), (0, 0, 0)) # Création d'une nouvelle image 3 fois plus large et 4 fois plus haute
    for i in range(dimx):    # parcours des deux dimensions pour modifier chaque pixel
        for j in range(dimy):
            r, v, b = image0.getpixel((i, j))    # On récupère la couleur du pixel (i,j) sous la forme d'un tuple (r, g, b)
            image1.putpixel((i, j), (r,v,b))     # On recopie cette image dans le coin en haut à gauche
            image1.putpixel((dimx+i, j), (b,r,v)) #Etape 2 : permutation de (r,v,b)
            image1.putpixel((2*dimx+i, j), (v,b,r)) #Etape 3 : permutation de (r,v,b)
            image1.putpixel((i, dimy+j), (255-r,255-v,255-b)) #Etape 4 : passage au négatif de l'image
            #Etape 5 : elle représente l'image en niveaux de gris en faisant la moyenne des composantes (r,v,b) de l'image initiale
            g=int((r+v+b)/3)
            image1.putpixel((dimx+i, dimy+j), (g,g,g))    
            image1.putpixel((2*dimx+i, dimy+j), (255-g,255-g,255-g)) #Etape 6 : passage au négatif de l'image de l'étape 5
            image1.putpixel((i, 2*dimy+j), (r,v,0))   # Etape 7 : image initiale en supprimant la composante bleue.
            image1.putpixel((dimx+i, 2*dimy+j), (0,v,b)) # Etape 8 :image initiale en supprimant la composante rouge
            image1.putpixel((2*dimx+i, 2*dimy+j), (r,0,b)) # Etape 9 :image initiale  en supprimant la composante verte
            image1.putpixel((i, 3*dimy+j), (r,0,0))   # Etape 10 :image initiale en supprimant la composante bleue et verte.
            image1.putpixel((dimx+i, 3*dimy+j), (0,v,0)) #Etape 11 :image initiale en supprimant la composante rouge et bleue
            image1.putpixel((2*dimx+i, 3*dimy+j), (0,0,b)) #Etape 12 :image initiale  en supprimant la composante rouge et verte
    return image1
        
    
    


image_initiale = "Femme.jpg"
image_ini = Image.open(image_initiale)  # Ouverture du fichier image source et création de l'objet Image

image_finale = CreationImage(image_ini) # On crée l'image 
image_finale.save("Etape2.jpg")         # on sauvegarde sous un autre nom
image_finale.show()