Master « Visualisation et Conception Infographiques en ligne » (VCIEL) Enseigna
Master « Visualisation et Conception Infographiques en ligne » (VCIEL) Enseignant : Mardi 12 janvier 2010 Serge Miguet Université Lumière Lyon 2 EP 32 : PHP / MySQL Durée : 1h30 Documents manuscrits ou issus de la plate-forme Spiral autorisés Le but de cet exercice est de concevoir un outil permettant de générer des « reflets » pour des images, à la mode du web 2.0. Le fonctionnement souhaité est illustré dans la figure ci- dessous. Tous les fichiers nommés dans cette description sont supposés être présents dans le même dossier d’un serveur Apache disposant d’un module PHP et de la bibliothèque graphique GD. Un fichier HTML intitulé « saisie.html » permet de saisir le nom d’un fichier image, au format PNG, supposé également présent dans le même dossier (fichier « serge.png » sur la figure). Lors du clic sur le bouton « Générer le reflet » du formulaire, un script PHP intitulé « miroir.php » s’exécute, et affiche d’une part l’image dont le nom a été saisi dans le formulaire, d’autre part une image reflet, générée dynamiquement par un script PHP intitulé « reflet.php ». 1. Donnez le code HTML du fichier « saisie.html », permettant de saisir le nom du fichier image, la couleur de fond de la page à générer, la taille du reflet, exprimée en pourcentage de la hauteur de l’image, et un paramètre d’opacité, exprimé lui aussi par un pourcentage compris entre 0 et 100. 2. Dans le script « miroir.php », donnez le code permettant de récupérer dans des variables les données saisies dans le formulaire « saisie.html », et de tester leur validité. Proposez un ou plusieurs mécanismes permettant de réafficher le formulaire en cas d’erreur de saisie (on ne traitera pas nécessairement tous les cas d’erreur possibles). VCIel Examen de PHP / MySQL, janvier 2010 page 1/2 3. Le script « reflet.php » chargé de générer dynamiquement une version « tête en bas » de l’image, aura lui aussi besoin d’accéder aux données saisies dans le formulaire (ce script sera écrit à partir de la question 5). Rajoutez au script « miroir.php » les instructions qui permettront au script « reflet.php » d’accéder à ces données. 4. Terminez l’écriture du script « miroir.php » par le bout de code permettant d’afficher l’une en dessous de l’autre, l’image originale et l’image retournée, dans une page web ayant pour couleur de fond la couleur saisie dans le formulaire. 5. Le reste de l’examen sera consacré à la rédaction du script « reflet.php ». Donnez tout d’abord les instructions permettant en début du script, de retrouver dans des variables les données du formulaire, mémorisées dans la question 3. 6. Donnez l’instruction permettant de générer l’en-tête HTTP indispensable au bon fonctionnement du script, et rappelez les principales contraintes liées à l’utilisation de cette instruction. 7. En utilisant les fonctions de la bibliothèque GD données ci-dessous, explicitez l’accès à l’image dont le nom a été saisi dans le formulaire, et créez en mémoire l’image permettant de contenir le reflet (même largeur, mais hauteur réduite en fonction du pourcentage entré). 8. Ecrivez les boucles permettant de recopier « à l’envers » dans l’image reflet, les dernières lignes de l’image originale. Choisissez (a. b. c. ou d.) le niveau de complexité qui vous convient pour répondre à cette question : a. Dans une première version du script, on ne s’occupera pas de l’opacité (comme si elle avait une valeur maximale de 100%) et on recopiera simplement les lignes de l’image originale, de bas en haut, dans l’image reflet. b. dans une deuxième version (un peu plus élaborée) du script, on va chercher à donner au reflet un effet de transparence. On pourra considérer dans cette version que le fond est noir, et qu’il s’agit donc simplement d’assombrir globalement le reflet. Il faut savoir que la couleur d’un pixel est stockée sur 24 bits (un octet par canal), dans l’ordre (rouge, vert, bleu). c. dans la troisième version (encore plus compliquée), on tiendra compte de la couleur du fond et de l’opacité souhaitée du reflet, et on calculera un mélange entre la couleur des pixels et la couleur du fond. d. dans la dernière version (la plus difficile), on pourra chercher à estomper progressivement le reflet, pour obtenir un dégradé vers la couleur du fond. 9. Donnez finalement l’instruction permettant de terminer le script en générant l’image « reflet » à destination du navigateur web. resource imagecreatefrompng(string $filename) retourne un identifiant d'image représentant une image obtenue à partir du fichier filename resource imagecreatetruecolor(int $width, int $height) crée une nouvelle image en couleurs vraies (par opposition aux images en couleurs indexées utilisant une palette de couleurs obtenues par imagecreate()) int imagesx (resource $image) retourne la largeur de l'image référencée par image. int imagesy (resource $image) retourne la hauteur de l'image référencée par image. int imagecolorat (resource $image, int $x, int $y) Retourne l'index de la couleur du pixel situé aux coordonnées spécifiées bool imagesetpixel ( resource $image , int $x , int $y , int $color ) dessine un pixel aux coordonnées spécifiées. VCIel Examen de PHP / MySQL, janvier 2010 page 2/2 bool imagepng(resource $image) Envoie l’image vers le navigateur au format PNG VCIel Examen de PHP / MySQL, janvier 2010 page 3/2 uploads/s3/ exam-vcielphpmy-sql2010.pdf
Documents similaires










-
26
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Nov 10, 2022
- Catégorie Creative Arts / Ar...
- Langue French
- Taille du fichier 0.1864MB