Comment peut-on réduire la taille d’une image sans perdre d’information ? C’est la question à laquelle les élèves de spécialité NSI vont répondre à travers une activité directement inspirée d’une épreuve pratique du baccalauréat NSI.

Au programme : manipulation d’images, listes Python, fonctions, fichiers binaires… et surtout un véritable problème informatique à résoudre.

Un projet inspiré de l’épreuve pratique du bac NSI

Cette activité s’appuie sur le sujet 3 de l’épreuve pratique 2026, consacré au codage RLE d’images. Le sujet manipule des images en niveaux de gris : chaque pixel est représenté par une valeur comprise entre 0 pour le noir et 255 pour le blanc. L’image peut alors être considérée comme une grande liste de valeurs numériques.

L’objectif est de découvrir une technique simple de compression appelée RLE, pour Run-Length Encoding.

Son principe ?

Au lieu d’enregistrer plusieurs fois une même valeur, on indique simplement combien de fois elle se répète.

Par exemple :

[4, 4, 4, 0, 5, 5]

peut être représentée par :

[3, 4, 1, 0, 2, 5]

Autrement dit : trois fois 4, une fois 0 et deux fois 5. C’est exactement le principe décrit dans le sujet du bac.

Du Python… mais pas seulement

Le fichier fourni aux élèves contient déjà une première fonction permettant de réaliser le codage RLE.

Elle parcourt une liste, compte les valeurs identiques consécutives puis enregistre alternativement le nombre de répétitions et la valeur concernée.

Mais le programme n’est volontairement pas terminé.

Les élèves doivent notamment programmer la fonction permettant de faire l’opération inverse : reconstruire les données d’origine à partir des informations compressées.

C’est ici que l’activité devient particulièrement intéressante : il ne s’agit pas seulement d’écrire quelques lignes de Python, mais de comprendre un algorithme existant pour concevoir son opération inverse.

Manipuler de vraies images

Une fois le principe compris, le programme est utilisé sur deux images fournies avec le sujet :

  • bac_nsi_32.png
  • bac_nsi_256.png

Le fichier Python contient plusieurs fonctions permettant de charger les pixels d’une image, de les transformer en liste de valeurs puis de reconstruire une image à partir de cette liste.

Une autre fonction permet même d’enchaîner automatiquement les différentes étapes : charger l’image, la compresser, enregistrer les données compressées, les relire, les décompresser puis reconstruire l’image.

L’algorithme étudié en classe produit donc immédiatement un résultat visible.

Et c’est justement en comparant les deux images que les élèves vont découvrir une nouvelle difficulté.

Quand l’algorithme rencontre ses limites

Le premier programme semble fonctionner…

jusqu’à ce qu’une image contienne une très longue succession de pixels identiques.

Le sujet conduit alors les élèves à identifier le problème : une succession peut comporter plus de 255 pixels identiques, alors que les informations enregistrées dans le fichier sont stockées sous forme d’octets.

L’activité change alors de nature.

La question n’est plus :

« Comment compléter le programme ? »

mais :

« Comment modifier notre algorithme pour qu’il fonctionne dans tous les cas ? »

Les élèves doivent imaginer une stratégie, modifier leur programme puis vérifier expérimentalement que leur solution fonctionne.

C’est une démarche très proche de celle rencontrée dans un véritable projet informatique : concevoir, tester, découvrir une limite, analyser le problème puis améliorer la solution.

Une préparation concrète à l’épreuve pratique

Cette activité permet également de travailler les compétences attendues lors de l’épreuve pratique de NSI.

Le sujet demande explicitement au candidat de travailler en autonomie, de faire preuve d’initiative et de savoir expliquer son programme à l’examinateur.

Les élèves doivent donc apprendre à :

comprendre un programme qu’ils n’ont pas entièrement écrit, compléter une fonction, utiliser des tests, manipuler des fichiers, observer les résultats obtenus et expliquer leurs choix.

Autant de compétences qui dépassent largement la simple connaissance de la syntaxe Python.

Comprendre ce qui se cache derrière nos fichiers

Le codage RLE est volontairement simple, mais il permet d’aborder une idée fondamentale de l’informatique : la représentation et la compression des données.

Une image que nous percevons comme un dessin devient, pour l’ordinateur, une suite de nombres.

À partir de là, toute la question est de trouver une représentation permettant de conserver la même information avec moins de données lorsque cela est possible.

Et les élèves découvrent aussi qu’un algorithme de compression n’est pas nécessairement efficace dans toutes les situations : selon les données de départ, le résultat peut parfois être plus court… mais aussi ne présenter aucun gain. Le sujet invite d’ailleurs explicitement les candidats à réfléchir à cette question.

Apprendre l’informatique en expérimentant

Avec ce type d’activité, la spécialité NSI ne consiste pas simplement à apprendre un langage de programmation.

Les élèves utilisent Python comme un outil pour comprendre un problème, construire une solution et confronter leur raisonnement au comportement réel d’un programme.

Une petite image, quelques listes de nombres et un algorithme de compression suffisent ainsi à travailler de nombreuses notions essentielles de l’informatique… tout en se préparant concrètement à l’épreuve pratique du bac NSI.