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

\title{Activité débranchée — Codage des images}
\def\thesequence{Photographie numérique}
\author{Adrian Amaglio}

\usepackage{tabularx}


% Format de fichier inspiré de JPEG
% Structure d'un fichier JPEG (header)
%    https://fr.wikipedia.org/wiki/JPEG#Syntaxe_et_structure
%
% Données EXIF associées à une image (footer)
%    https://fr.wikipedia.org/wiki/Exchangeable_image_file_format#Exemple
%    https://www.media.mit.edu/pia/Research/deepview/exif.html [En anglais]

% Exemple de métadonnées EXIF :
% Balise                                  Valeur
% Constructeur                            HP
% Modèle                                  R707
% Orientation                             haut - gauche
% Résolution X                            72,00
% Résolution Y                            72,00
% Unité de résolution                     Pouce
% Logiciel                                Ver1.01
% Date et heure                           2003:08:11 16:45:32
% Position YCbCr                          centrée
% Compression                             compression JPEG
% Résolution X                            72,00
% Résolution Y                            72,00
% Unité de résolution                     Pouce
% Vitesse d’obturation                    1/250 s
% Nombre F                                f/4,0
% ProgrammeExposition                     Programme normal
% Version Exif                            Exif version 2.1
% Date et heure (d’origine)               2003:08:11 16:45:32
% Date et heure (numérisation)            2003:08:11 16:45:32
% ConfigurationComposants                 Y Cb Cr -
% Taux de compression bits par pixel      4.01
% Compensation d’exposition               0.0
% Valeur d’ouverture maximale             2.00
% Mode de mesure de distance              Formes
% Flash                                   Flash inactif
% Longueur de focale                      20,1 mm
% Annoteur                                432 bytes donnée inconnue
% FlashPixVersion                         FlashPix version 1.0
% Espace colorimétrique                   sRGB
% Dimension X en pixels                   2240
% Dimension Y en pixels                   1680
% Source du fichier                       DSC
% Index d’interopérabilité                R98
% Version d’interopérabilité              (null)

\begin{document}

\maketitle

\section{Votre mission}
Les textes suivants sont des fichiers images, ouverts comme du texte.
On peut donc y lire les instructions nécessaires à l’affichage de l’image, pixel par pixel.

\begin{exercice}
    Vous allez dessiner les images décrites ci dessous.
    Puis vous devrez les assembler dans l’ordre !\\
    Vous avez le choix entre les deux résolutions d’image suivantes :\\
    Sur une feuille à grands carreaux coupée en 4, dessinez l’image avec un pixel par carreau.\\
    Sur une feuille à petits carreaux coupée en 4, dessinez l’image avec un pixel pour 4 carreaux.\\
    Vous aurez pour cela besoin des informations suivantes.
\end{exercice}

\section{Documentation technique de notre format d’image}
Un fichier image contient plusieurs informations.
Chacune de ces informations a un nom et une valeur :
\\
\begin{table}[h]
\begin{tabularx}{\textwidth}{|l|X|X|}
    \hline
    Nom & Description & Valeurs possibles \\
    \hline
    SOI & « Start Of Image », il indique le début du fichier image & Aucune \\
    \hline
    SOF0 & « Start Of Frame », il indique les dimensions, le nombre de couleurs et la profondeur des couleurs & 4 valeurs : L,H,N,P = largeur, hauteur, nombre de couleurs, profondeur des couleurs\\
    \hline
    DHT & Define Huffman Table & Informations de compression codées en base64 \\
    \hline
    DRI  & Define Quantization Table & Informations de compression codées en hexadécimal \\
    \hline
    SOS & « Start Of Scan », indique le début de la description des pixels & Une suite de chiffres contenant les couleurs de chaque pixels \\
    \hline
    APP0 & Les métadonnées sont stockées ici & Les valeurs sont sous la forme « clé=valeur,clé=valeur… »\\
    \hline
    COM & Commentaire & On peut mettre ce que l’on veut ici \\
    \hline
    EOI & « End Of Image », indique la fin du fichier image & Aucune \\
    \hline
\end{tabularx}
\end{table}






\newpage





% Displays an image described by text.
% It must be read with its documentation (first page)
\newcommand{\image}[6]{% arg1: scantext, arg2: datetime, arg3: gpslat, arg4: gpslong, arg5: rotation, arg6: commentary
    \thispagestyle{empty} % Remove header and footer %
    \begin{minipage}{.5\textwidth}
    \sloppy
    \texttt{SOI\\
        SOF0 5,5,3,1\\
        DHT QXUgdmVudCBxdWkgc291ZmZsZSBsYSB0ZW1\\
        ww6p0ZSBzZSByw6ljb2x0ZW50IGxlcyBqb3Vycy\\
        BkZSBmw6p0ZS4=\\
        DRI c2abc2a0496c206e6520666175742070617\\
        32076656e647265206c61207065617520646520\\
        6ce280996f757273c2a0c2bb207e2050726f766\\
        57262652076c3a967616e65\\
        SOS\\
        #1\\
        APP0 version exif=2.1, Date et heure=#2, software=alamainV2.0, GPS latitude=#3, GPS longitude=#4, GPS altitude=1312m, rotation=#5\\
        COM https://maps.openrouteservice.org permet d’entrer des
    coordonnées GPS ! #6\\
        EOI
    }\\\textbf{}\\
    \end{minipage}
}

% Les dates
% TODO user array https://tex.stackexchange.com/questions/37426/create-an-array-of-variables
\newcommand{\dateone}{1773:12:16}
\newcommand{\datetwo}{1789:07:14}
\newcommand{\datethree}{1831:11:21}
\newcommand{\datefour}{1871:05:21}
\newcommand{\datefive}{1917:11:07}
\newcommand{\datesix}{1968:05:03}
\newcommand{\dateseven}{2018:11:17}
\newcommand{\dateeight}{2019:12:05}
\newcommand{\datenine}{2021:10:03}
\newcommand{\dateten}{2033:05:12}

% Les coordonnées GPS
\newcommand{\latone}{42.3518}
\newcommand{\lattwo}{48.8532}
\newcommand{\latthree}{45.7747}
\newcommand{\latfour}{48.8872}
\newcommand{\latfive}{59.9378}
\newcommand{\latsix}{48.84878}
\newcommand{\latseven}{48.87145}
\newcommand{\lateight}{43.6124}
\newcommand{\latnine}{}
\newcommand{\latten}{}

\newcommand{\longone}{-71.0416}
\newcommand{\longtwo}{2.3692}
\newcommand{\longthree}{4.8318}
\newcommand{\longfour}{2.342}
\newcommand{\longfive}{30.3099}
\newcommand{\longsix}{2.3437}
\newcommand{\longseven}{2.30241}
\newcommand{\longeight}{3.8492}
\newcommand{\longnine}{}
\newcommand{\longten}{}

% Simple color definition %
\newcommand{\R}{100}
\newcommand{\G}{010}
\newcommand{\B}{001}
\newcommand{\W}{111}
\newcommand{\K}{000}

% Pictures definitions %
% Ces exemples sont durs à lire, les élèves reconnaissent à peine les lettres. Ça les force à utiliser les métadonnées pour les remettre dans l’ordre.
% La première ligne est le contenu de l’image
\newcommand{\picI}{\K\B\B\B\K\W\K\G\K\W\\\K\W\G\W\K\W\K\G\K\W\\\K\R\R\R\K} % Un I
% La seconde est sa rotation
\newcommand{\picIrot}{180°}
\newcommand{\picL}{\B\R\G\G\G\B\K\G\G\G\\\B\R\G\G\G\B\K\G\G\G\\\B\R\K\R\G} % Un L
\newcommand{\picLrot}{0°}
\newcommand{\picO}{\K\B\G\R\K\K\W\W\W\K\\\W\B\G\R\W\K\W\W\W\K\\\K\B\G\R\K} % Un O
\newcommand{\picOrot}{90°}
\newcommand{\picV}{\B\G\B\G\B\R\G\R\G\R\\\K\G\K\G\K\R\G\R\G\R\\\B\B\G\B\B} % Un V
\newcommand{\picVrot}{0°}
\newcommand{\picE}{\K\K\K\K\K\W\W\W\W\W\\\W\R\W\R\W\W\R\R\R\W\\\R\R\B\R\R} % Un E
\newcommand{\picErot}{90°}
\newcommand{\picSecond}{\W\W\W\B\W\B\K\W\K\B\\\W\W\W\B\K\W\K\B\K\B\\\W\W\W\B\K} % Un 2
\newcommand{\picSecondrot}{0°}
\newcommand{\picHeart}{\K\R\K\R\K\R\G\R\G\R\\\R\G\W\G\R\K\R\G\R\K\\\K\K\R\K\K} % Un cœur
\newcommand{\picHeartrot}{0°}
\newcommand{\picExclamation}{\R\K\G\B\W\R\K\G\B\W\\\R\K\G\B\W\R\R\G\W\W\\\R\K\G\B\W} % Deux points d’exclamation
\newcommand{\picExclamationrot}{0°}
\newcommand{\picFirst}{\K\B\B\B\R\K\K\B\R\R\\\W\W\B\W\W\R\R\B\B\K\\\R\R\B\K\K} % Un 1
\newcommand{\picFirstrot}{180°}
\newcommand{\picSixth}{\G\B\B\B\G\W\B\W\W\W\\\G\B\B\B\G\W\B\W\B\W\\\G\B\B\B\G} % Un 6
\newcommand{\picSixthrot}{0°}
\newcommand{\picFiveteen}{\G\R\G\G\G\G\R\G\W\G\\\G\G\G\W\G\R\R\R\W\W\\\B\B\B\B\B} % Un 15
\newcommand{\picFiveteenrot}{-90°}
\newcommand{\picSeventeen}{\K\G\K\K\K\K\W\G\W\K\\\K\G\G\G\K\K\W\G\W\K\\\K\G\G\G\K} % Un 17
\newcommand{\picSeventeenrot}{0°}
\newcommand{\picEighteen}{\R\R\R\R\R\K\W\K\W\K\\\G\G\G\G\G\G\B\G\B\G\\\G\G\G\G\G} % Un 18
\newcommand{\picEighteenrot}{90°}

% On génère ici les images précédemment décrites avec un petit hint à la fin pour pouvoir les retrouver sur papier
% Les rotations sont en sens horaire
\image{\picI}{\dateone}{\latone}{\longone}{\picIrot}{i}
\image{\picL}{\datetwo}{\lattwo}{\longtwo}{\picLrot}{l}
\image{\picO}{\datethree}{\latthree}{\longthree}{\picOrot}{0}
\image{\picV}{\datefour}{\latfour}{\longfour}{\picVrot}{\^}
\image{\picE}{\datefive}{\latfive}{\longfive}{\picErot}{3}
\image{\picSecond}{\datesix}{\latsix}{\longsix}{\picSecondrot}{sec}
\image{\picFirst}{\dateseven}{\latseven}{\longseven}{\picFirstrot}{first}
\image{\picSixth}{\dateseven}{\latseven}{\longseven}{\picSixthrot}{sixth}
\image{\picFiveteen}{\dateseven}{\latseven}{\longseven}{\picFiveteenrot}{fifteenth}
\image{\picSeventeen}{\dateseven}{\latseven}{\longseven}{\picSeventeenrot}{seventeenth}
\image{\picEighteen}{\dateseven}{\latseven}{\longseven}{\picEighteenrot}{eighteenth}
\image{\picHeart}{\dateeight}{\lateight}{\longeight}{\picHeartrot}{k}
\image{\picExclamation}{\datenine}{\latnine}{\longnine}{\picExclamationrot}{punct}
\end{document}
