CONCEPTION
D'UNE IMAGE NUMERIQUE

Mise en situation

L'image numérique affichée sur l'écran d'un ordinateur ou d'un téléphone portable (ordiphone) se compose d’un ensemble de pixels. Chaque pixel comporte trois sous-pixels de couleurs rouge, vert et bleu. Des programmes permettent d'agir sur ces pixels pour créer ou modifier l'image.

Hypothèses et données

Pour créer une image numérique en Python, une solution consiste à utiliser le module Image de la bibliothèque PIL. Le programme ci-dessous génère une image de 8x8 pixels noirs, puis colorie les pixels de coordonnées (3;2), (4;5), (5;5) et (6;5) en blanc.

from PIL import Image
img=Image.new("RGB",(8,8))
rouge=255 ; vert=255 ; bleu=255
img.putpixel((3,2),(rouge,vert,bleu))
for x in range(4,7) :
  img.putpixel((x,5),(rouge,vert,bleu))
img.save("image.png")
img.show()

Travail demandé

Image n°1

Proposer un code en Python produisant une image de 8x8 pixels avec un pixel rouge en (0;0), un pixel vert en (7;0), un pixel bleu en (0;7) et un pixel jaune en (7;7) sur fond noir.

Image n°2

Proposer un code en Python produisant une image de 8x8 pixels et représentant un T bleu sur fond noir.

Image n°3

Proposer un code en Python produisant une image de 8x8 pixels avec tous les pixels jaunes.

Image n°4

Proposer un code en Python produisant une image 8x8 pixels représentant un T bleu sur fond jaune, sauvegardée sous le nom T.png.

Image n°5

Proposer un code en Python qui ouvre une image et en double les dimensions. On prendra comme modèle l'image n°4.

from PIL import Image
img=Image.open("T.png")
...
for x in range(0,img.size[0]) :
  for y in range(0,img.size[1]) :
...

Annexes

Couleur d'un pixel

On peut s'assurer que les pixels générés sont noirs :

from PIL import Image
img=Image.new("RGB",(8,8))
p=img.getpixel((1,1))
print(p)  # affiche (0, 0, 0)

Affichage avec Matplotlib

Une image de dimensions minuscules peut se visualiser avec la bibliothèque Matplotlib, habituellement dédiée au tracé de courbes.

from PIL import Image
img=Image.new("RGB",(3,2))
img.putpixel((0,0),(255,0,0))
import matplotlib.pyplot as plt
plt.imshow(img)
plt.show()