\documentclass[11pt,a4paper]{../../template/template_cours}
\usepackage{listings}

\usepackage{minted}

\title{Modifier une image avec Python}
\author{Adrian Amaglio}
\def\thesequence{Photographie numérique}

\begin{document}
Lisez attentivement le sujet au fur et à mesure de votre progression.

% ---

\section*{Ouvrir une image}
\begin{exercice}
    Créez un dossier nommé « image python » (ou autre) dans votre zone personnelle.
    C’est là que nous travaillerons durant la durée de cette activité.
\end{exercice}

\begin{exercice}
    Téléchargez l’image de pomme sur laquelle nous allons travailler : \url{https://pixees.fr/informatiquelycee/n_site/img/pomme.jpg} et enregistrez là dans votre dossier de travail.
\end{exercice}

\begin{exercice}
Démarrez edupython et recopiez y les lignes suivantes :
\begin{minted}{python}
from PIL import Image
img = Image.open("pomme.jpg")
r,v,b = img.getpixel((100,250))
print("rouge : ", r, " vert : ", v, " bleu : ", b)
\end{minted}
    La première ligne de ce programme sert à activer la modification des images.\\
    La seconde ligne sert à ouvrir l’image de pomme précédemment téléchargée.\\
    La troisième ligne récupère la couleur du pixel aux coordonnées (100,250).\\
    La quatrième ligne affiche la couleur du pixel.\\
    Enregistrez le fichier dans votre dossier de travail et exécutez le. Quelle est la couleur de ce pixel ?\\
\end{exercice}

\begin{exercice}
    Modifiez votre programme pour qu’il affiche la couleur en RVB du pixel aux coordonnées (250,300). Faites vérifier votre travail.
\end{exercice}

\section*{Modifier quelques pixels}

\begin{exercice}
Modifiez votre programme pour qu’il ressemble a ceci :
\begin{minted}{python}
from PIL import Image
img = Image.open("pomme.jpg")
img.putpixel((250,250),(255,0,0))
img.show()
\end{minted}
Vous devriez obtenir une image de pomme, avec en son centre un pixel rouge vif.
C’est celui que python vient de modifier.\\
La première ligne de ce programme sert à activer la modification des images.\\
La seconde ligne sert à ouvrir l’image de pomme précédemment téléchargée.\\
La troisième ligne sert à placer un pixel rouge (de couleur 255,0,0) au milieu de l’image, c’est à dire aux coordonnées (250,250).\\
La quatrième ligne sert à afficher l’image à l’écran.
\end{exercice}

\begin{exercice}
    Modifiez le programme précédent pour qu’il colorie en bleu le pixel aux coordonnées (100, 250)
\end{exercice}

\begin{exercice}
    Modifiez le programme précédent pour qu’il colorie plusieurs pixels les uns en dessous des autres de manière à tracer un trait vertical de plusieurs pixels de long.
\end{exercice}

\begin{exercice}
    Modifiez le programme précédent pour qu’il colorie plusieurs pixels les uns à côté des autres de manière à tracer un trait horizontal de plusieurs pixels de long.
\end{exercice}

\section*{Écrire de vrais programmes de traitement}

\begin{exercice}
    Saisissez et testez le programme suivant :
    \begin{minted}{python}
from PIL import Image
img = Image.open("pomme.jpg")
largeur = 500
hauteur = 500
for y in range(hauteur):
    for x in range(largeur):
        r,v,b = img.getpixel((x,y))
        nouveau_r = r+50
        nouveau_v = v+50
        nouveau_b = b+50
        img.putpixel((x,y), (nouveau_r, nouveau_v, nouveau_b))
img.show()
    \end{minted}
    Que fait ce programme ?
\end{exercice}

\begin{exercice}
    En vous inspirant de l’exercice précédent, écrivez un programme qui inverse le rouge et le bleu de chaque pixel sans changer le vert.
\end{exercice}

\begin{exercice}
    Après avoir fait quelques recherches sur le « négatif d’une image », écrivez un programme qui affiche le négatif d’une image.
\end{exercice}

\begin{exercice}
    Après avoir fait quelques recherches sur les « images en niveau de gris », écrivez un programme qui transforme une image couleur en image en niveaux de gris.\\
    Aide : la division en python se fait à l’aide de l’opérateur /
\end{exercice}

\begin{exercice}
    Testez les deux derniers programmes sur une image de votre choix.\\
    Faites vérifier au professeur.
\end{exercice}


\end{document}
