ProgC

Sujets de travaux pratiques de Programmation en C

View on GitHub

Année: 2024-2025

Travaux pratiques 6

Objectifs

BMP (format d’image)

Le format BMP (Bitmap) utilise la représentation RGB (Rouge, Vert, Bleu) ou RGBA (Rouge, Vert, Bleu, Alpha) pour définir la couleur de chaque pixel. Chaque pixel est codé en utilisant une certaine quantité de bits, généralement 24 bits pour RGB et 32 bits pour RGBA. Dans le cas de RGB, chaque composante de couleur (R, G, B) est codée sur 8 bits chacune, permettant de représenter une large gamme de couleurs. L’ajout d’un canal Alpha (A) dans le format RGBA ajoute 8 bits supplémentaires pour gérer la transparence, ce qui est utile pour créer des images avec des zones partiellement transparentes.

Référence : https://fr.wikipedia.org/wiki/Windows_bitmap

JSON

Le format JSON (JavaScript Object Notation) est un format de données léger et lisible par les humains utilisé pour structurer et échanger des informations entre différentes applications. Il repose sur deux structures de base :

Objets: Les objets JSON sont des ensembles non ordonnés de paires clé-valeur. Chaque paire clé-valeur est séparée par deux-points (:), et les paires sont séparées par des virgules. Par exemple :

{ 
  "nom": "Pierre Dupont", 
  "année": 4
}

Tableaux: Les tableaux JSON sont des listes ordonnées de valeurs. Les valeurs peuvent être des chaînes de caractères, des nombres, des booléens, des objets JSON ou des tableaux JSON. Les valeurs d’un tableau JSON sont séparées par des virgules et entourées de crochets, par exemple :

["rouge", "vert", "bleu"]

Le format JSON est facilement lisible par les humains, ce qui le rend populaire pour stocker et échanger des données structurées.

Référence : https://fr.wikipedia.org/wiki/JavaScript_Object_Notation

Exercice 6.1 [★]

Analyse des images

Créer un système client-serveur qui analyse des images BMP, extrait les dix premières couleurs de l’image, et génère des graphiques en utilisant SVG en fonction des couleurs extraites.

Description : Pour atteindre cet objectif, suivez les instructions suivantes :

En suivant ces instructions, vous pourrez créer un système client-serveur qui analyse des images BMP, extrait les couleurs et génère des graphiques en utilisant firefox en fonction des couleurs extraites.

Exercice 6.2 [★★]

Analyse des images

L’objectif de cet exercice est de permettre à l’utilisateur de saisir le nombre de couleurs (toujours inférieur ou égal à 30) lors de l’exécution du client et du serveur, puis adapter le traitement en conséquence. Pour permettre à l’utilisateur de spécifier le nombre de couleurs à traiter, des modifications doivent être apportées aux fichiers serveur.c et client.c. Voici comment effectuer ces modifications :

Dans serveur.c :

Dans client.c :

Une fois que vous avez apporté ces modifications aux deux fichiers, vous pouvez tester votre code en saisissant différents nombres de couleurs lors de l’exécution du client. Le serveur devrait être capable de traiter le nombre de couleurs spécifié par l’utilisateur et de générer un graphique en conséquence.

N’oubliez pas d’utiliser la commande make pour recompiler vos fichiers après avoir apporté ces modifications.

Exercice 6.3 [★★★]

Objectif : Modifier le code client.c et serveur.c pour utiliser le format de messages JSON lors de la communication entre le client et le serveur.

Actuellement, les fichiers client.c et serveur.c utilisent des messages simples pour communiquer. L’objectif est de passer à un format de messages JSON plus structuré. Les messages JSON contiendront un code d’opération et des valeurs associées.

Instructions :

Exemple : Supposons que le client souhaite envoyer une demande de calcul d’addition au serveur. Au lieu d’envoyer “calcule: + 23 45”, le client enverra un message JSON tel que :

{
  "code": "calcule",
  "valeurs": ["+", "23", "45"]
}

Le serveur analysera ce message JSON, effectuera le calcul demandé, puis renverra la réponse au client au format JSON.

Autres exemples :

{
  "code" : "message",
  "valeurs" : [ "bonjour"]              
}

{
   "code" : "couleurs",
   "valeurs" : [ "0effeee", "..."]              
}             

Fichiers

bmp.c, bmp.h, client.c, client.h, couleur.c, couleur.h, Makefile, serveur.c, serveur.h

Instructions