Académique Documents
Professionnel Documents
Culture Documents
Programmation Python
Exercice 1 :
Vous devez créer des scripts en utilisant Image de PIL pour (importer le module Image de
PIL) :
- afficher la taille et le format de l'image,
- afficher la valeur du pixel de coordonnée (45,67),
- modifier sa valeur pour qu'elle soit égale à (250,250,250)
- enregistrer l'image sous le nom de simple_manipulation.png
- afficher l'image avec Python.
Voir le Scripte suivant :
print(a[0])
#le nombre de colonnes
print(a[1])
#af chage du format de l'image jpeg, png, ..
print(img.format)
#accéder aux contenu d'un pixel
print('la valeur du pixel de cordonnées (45,67) est', img.getpixel((45,67)))
#modi cation de la valeur d'un pixel
img.putpixel((45,67),(234,250,45))
#sauvegarde de la modi cation
img.save('nouvelle_image.png')
#l'af chage de l'image
img.show()
#fermeture de l'image
1

fi
fi
fi
fi
Master M2SI-2022-2023
Programmation Python
img.close()
return
Information :
Le pixel en (0,0) correspond au pixel le plus en haut à gauche de l'image. La première
coordonnée croît lorsqu'on se déplace vers la droite de l'image, et la seconde croît lorsqu'on se
déplace vers le bas de l'image.
Exercice 2 :
Créez un script qui affiche l'image avec seulement deux couleurs : le noir et le blanc.
Voir le Scripte suivant :
def main():
img = Image.open('C:\image.jpg')
size = img.size
for i in range(size[0]):
for j in range(size[1]):
if img.getpixel((i,j))[0] < 255 or img.getpixel((i,j))[1] < 255 or img.getpixel((i,j))[2] < 255 :
img.putpixel((i,j),(0,0,0))
img.show()
img.close()
return
Explication :
2

Master M2SI-2022-2023
Programmation Python
Exercice 3 :
N.B : pour tout pixel : on récupère la moyenne des trois valeurs du pixel i,j dans la
variable val (pour avoir la nuance).
Exercice 4 :
Créez un script qui af che une nouvelle image correspondant au symétrique de
l'image.
from PIL import Image
img = Image.open("C:\image.jpg")
size = img.size
imgNew = Image.new(img.mode,size)
for i in range(size[0]):
for j in range(size[1]):
color = img.getpixel((i,j))
imgNew.putpixel((size[0]-i-1,j),color)
imgNew.show()
img.close()
Exercice 5 :
Créez un script qui affiche une nouvelle image correspondant à l'image quatre fois plus
petite.
3

fi
fi
Master M2SI-2022-2023
Programmation Python
N.B :
On crée une nouvelle image via la fonction new qui prend en paramètres le mode et
la taille de la nouvelle image.
Ici, la taille de la nouvelle image est celle de l'image de base divisée par 2 pour
chaque dimension. On prend la partie entière supérieure à l'aide de la fonction ceil
de numpy, et on convertit ce nombre en un integer à l'aide de la fonction int.
Boucle for 1 : On parcourt l'image en largeur :
Boucle for 2: On parcourt l'image en hauteur :
Pour diviser la taille de l'image par 4 sans trop la
détériorer, on garde 1 pixel sur 4. Ainsi, on garde un pixel tous les 4 pixels (i.e. tous
les pixels de numéros i+j multiples de 4). S'il s'agit d'un de ces pixels :
On récupère la couleur du pixel
On donne cette couleur au pixel dont les coordonnées
sont 2 fois plus petites (sans oublier de prendre le partie entière, d'où l'opération //).
Exercice 6 :
Créez un script qui af che une nouvelle image de même taille que image.jpg et
composée de 4 reproductions de cette image.
4

fi
Master M2SI-2022-2023
Programmation Python
size = img.size
imgNew = Image.new(img.mode,(2*int(np.ceil(size[0]/2)),2*int(np.ceil(size[1]/
2))))
for i in range(size[0]):
for j in range(size[1]):
if (i+j)%4 == 0:
color = img.getpixel((i,j))
imgNew.putpixel((i//2,j//2),color)
imgNew.putpixel((i//2 + int(np.ceil(size[0]/2)),j//2),color)
imgNew.putpixel((i//2,j//2 + int(np.ceil(size[1]/2))),color)
imgNew.putpixel((i//2 + int(np.ceil(size[0]/2)),j//2 + int(np.ceil(size[1]/
2))),color)
imgNew.show()
img.close()
Exercice 7 :
Ecrivez un script qui permet de changer le mode d’une image couleur à une image
niveau de gris à l’aide de la fonction convert (RGB to L).
Quelques Manipulations
Séparation des canaux
r, v, b = img.split()
r.show()
v.show()
b.show()
5

Master M2SI-2022-2023
Programmation Python
imgNew = img.rotate(45)
Redimensionnement
imgNew = img.resize((100, 250))
6