Jérôme Cutrona

Version statique de l'intranet de Jérôme Cutrona - Rejoindre la version dynamique 🔒

Les exemples et corrections sont potentiellement non fonctionnels.

B.U.T. Informatique - IUT de Reims - Université de Reims

Génération dynamique d'images en PHP - Sujet complémentaire

Navigation

Consignes

Ce sujet complémentaire est la suite du TP « Développement d'une application Web de consultation et modification de morceaux de musique ». Les questions seront logiquement traitées dans le même dépôt Git que le sujet principal.

Génération dynamique d'images en PHP

PHP, associé à la bibliothèque GD, permet de manipuler des images. Cependant, la bibliothèque propose uniquement une vision non orientée objet. Afin de vous familiariser avec le développement objet en PHP, une encapsulation objet des fonctionnalités GD vous est proposée sous la forme d'une classe MyGdImage. Toutes les fonctions GD qui admettent comme premier paramètre une ressource issue de la création d'une image GD ont été transformées en méthodes de la classe MyGdImage. Par exemple, la fonction GD bool imageFilledRectangle( GdImage $image, int $x1, int $y1, int $x2, int $y2, int $color ) devient la méthode bool filledRectangle( int $x1, int $y1, int $x2, int $y2, int $color ) de la classe MyGdImage. Notez la disparition du paramètre de type « GdImage » (qui est devenu un attribut de l'instance) ainsi que la suppression de la chaîne « image » dans le nom de la méthode. Les fonctions de la bibliothèque GD qui n'admettent pas une ressource comme premier paramètre sont des méthodes statiques de la classe MyGdImage. Pour connaître l'ensemble des fonctions GD, consultez la documentation. Pour finir, la construction d'instances de la classe MyGdImage est possible grâce à trois méthodes de classe :

  • MyGdImage::createFromSize(int $sx, int $sy) pour créer une image vide de taille $sx × $sy
  • MyGdImage::createFromString(string $data) pour créer une image à partir d'une chaîne de caractères $data contenant l'équivalent des données d'un fichier image.
  • MyGdImage::createFromFile(string $filename, string $type) pour créer une image à partir d'un fichier $filename existant sur le serveur. Le type du fichier est donné par $type qui prend ses valeurs dans les constantes de la classe MyGdImage :
    • MyGdImage::GD pour un fichier de type GD
    • MyGdImage::GD2PART pour un fichier de type GD2PART
    • MyGdImage::GD2 pour un fichier de type GD2
    • MyGdImage::GIF pour un fichier de type GIF
    • MyGdImage::JPEG pour un fichier de type JPEG
    • MyGdImage::PNG pour un fichier de type PNG
    • MyGdImage::WBMP pour un fichier de type WBMP
    • MyGdImage::XBM pour un fichier de type XBM
    • MyGdImage::XPM pour un fichier de type XPM

Un exemple de code pourrait être : et le résultat serait :Un exemple d'image générée avec MyGdImage

Récupérez le code source de la classe MyGdImage : MyGdImage.php (télécharger). Le code de cette classe fait appel à des possibilités offertes par PHP objet que vous découvrirez au semestre 3. Vous devez également télécharger la classe d'exception MyGdImageException.php (télécharger) associée à « MyGdImage ».

Affichage des artistes avec des jaquettes

Travail à réaliser
  1. Écrivez un script coverartist.php qui admet un paramètre id correspondant à l'identifiant de l'artiste dont une mosaïque de jaquettes est à afficher. Vous devrez utiliser les fonctionnalités de GD pour parvenir à vos fins. Vous devrez compléter la méthode getCover() de la classe Album. Jaquette pour plusieurs albums
  2. Modifiez le programme de listage des artistes afin qu'il intègre les jaquettes des CD et adopte une mise en page plus compacte. Liste des artistes

Affichage des artistes avec des jaquettes, organisation alphabétique

Modifiez le programme de listage des artistes afin de créer une liste d'artistes pour chaque lettre de l'alphabet présente dans la liste des noms d'artistes.

Affichage des artistes avec des jaquettes, organisation et menu alphabétique

Modifiez le programme de listage des artistes afin de créer un menu pour chaque lettre correspondant à un artiste. Les lettres pour lesquelles aucun artiste n'existe ne seront pas des liens.

Une piste de résolution simple de ce problème consiste à marquer les lettres dans un tableau : marquer true si un nom d'artiste commence par cette lettre, false sinon.

Classes Genre et GenreCollection

Vous pouvez poursuivre l'écriture des classes en réalisant la classe Genre permettant de manipuler les enregistrements de la table « genre ». Genre

Vous réaliserez également la classe GenreCollection. Genre

Affichage des artistes avec des jaquettes, organisation et menu alphabétique, choix du genre

Modifiez le programme de listage des artistes afin de proposer la sélection des artistes dont au moins un des albums correspond à un genre donné. Pour cela, votre programme devra admettre un paramètre genreId correspondant à l'identifiant du genre choisi.

S'amuser avec les images

Réalisez les scripts permettant d'obtenir les images suivantes : Exercice 2 Exercice 3

Réalisez un ciel étoilé avec la lune dont la phase est passée en paramètre (de 0 à 100) : Exercice 5 Exercice 5

Pour les plus enthousiastes d'entre-vous, utilisation de filter pour réaliser des convolutions : Exercice 4 avec le noyau noyau de convolution détection de contours, devient : Exercice 4