La méthode open vous permet d'ouvrir un fichier image.


img=open("tux.jpg")
			

Le paramètre correspond au nom du fichier image (attention de bien renseigner le bon chemin si votre fichier image et votre fichier "python" ne se trouvent pas dans le même dossier)

À faire vous-même 2.1

Saisissez, analysez et testez ce code


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PIL.Image import *
img=open("tux.jpg")
img.save("resultat.jpg","JPEG")
			

La troisième ligne du programme proposé dans le "À faire vous-même 2.1", permet d'importer la bibliothèque Pillow.

La ligne "img.save("resultat.jpg","JPEG")" permet de sauvegarder une image. L'image sera sauvegardée dans le dossier courant (le même dossier que "tux.jpg") et aura pour nom "resultat.jpg".

N.B Dans ce cas précis, il est totalement inutile de sauvegarder l'image puisque nous ne l'avons pas modifiée. L'idée est juste de vous montrer l'utilisation de "img.save".


La méthode getpixel((x,y)) renvoie un tuple (un tuple ressemble beaucoup à une liste, à l'exception près, qu'un tuple, une fois créé, n'est pas modifiable.) contenant les trois composantes : rouge, verte et bleue du pixel situé aux coordonnées x,y (sachant que le pixel de coordonnées 0,0 se situe en haut à gauche de l'image).

À faire vous-même 2.2

Saisissez, analysez et testez ce code


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PIL.Image import *
img=open("tux.jpg")
t=img.getpixel((150,200))
print(t)
			

Si tout se passe correctement, vous devriez avoir à l'écran (dans la console) : (232, 178, 7). Nous pouvons donc affirmer que le pixel, de l'image "tux.jpg", ayant pour coordonnées (150, 200), a pour composantes : Rouge=>232 ; Vert=>178 ; Bleu=>7

N.B. Les tuples s'écrivent avec des parenthèses (alors que les listes s'écrivent avec des crochets) :


#!/usr/bin/env python
# -*- coding: utf-8 -*-
li=[12,42,43]
tu=(12,42,43)
print(li)
print(tu)
			

Encore une chose importante sur les tuples : si vous voulez récupérer une valeur du tuple, cela se passe exactement comme avec les listes. Si vous reprenez l'exemple ci-dessus, tu[0] est égal à 12 et tu[2] est égal à 43

Vous remarquerez que la méthode getpixel prend en paramètre un tuple : (150,200)

Autre méthode très utile : putpixel. Cette méthode permet de modifier les canaux Rouge, Vert et Bleu d'un pixel.

La méthode putpixel prend deux paramètres (2 tuples) : le premier paramètre correspond aux coordonnées du pixel que nous voulons modifier (tuple avec 2 éléments : (x,y)). Le second paramètre correspond aux valeurs à attribuer aux canaux R,V,B (tuple avec 3 éléments : (255,255,255), ici un pixel blanc).

À faire vous-même 2.3

Saisissez, analysez et testez ce code


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PIL.Image import *
img=open("tux.jpg")
img.putpixel((100,30),(255,255,255))
img.save("resultat.jpg","JPEG")
			

Vous devriez avoir un des deux pingouins avec un pixel blanc au milieu du front

À faire vous-même 2.4

Écrivez un programme permettant de "colorier" le pingouin en vert (tous les pixels noirs devront être remplacés par des pixels verts).

N.B. Le résultat ne sera pas parfait, car de nombreux pixels paraissant noirs ne sont, en fait, pas vraiment noirs (0,0,0).