47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| 
 | |
| /* Fonction pour traiter l'image */
 | |
| void modifier_image_pgm(const char *nom_fichier) {
 | |
|     FILE *fichier;
 | |
|     char ligne[256];
 | |
|     int largeur, hauteur, niveaux, x, y;
 | |
|     
 | |
|     fichier = fopen(nom_fichier, "r+");
 | |
|     if (fichier == NULL) {
 | |
|         fprintf(stderr, "Erreur: Impossible d'ouvrir le fichier\n");
 | |
|         exit(EXIT_FAILURE);
 | |
|     }
 | |
| 
 | |
|     /* Lire l'en-tête du fichier PGM */
 | |
|     fgets(ligne, sizeof(ligne), fichier); /* Lire le format (P2) */
 | |
|     fgets(ligne, sizeof(ligne), fichier); /* Lire le commentaire */
 | |
|     fscanf(fichier, "%d %d", &largeur, &hauteur);
 | |
|     fscanf(fichier, "%d", &niveaux);
 | |
| 
 | |
|     /* Modifier les pixels d'intensité 3 au centre de l'image */
 | |
|     for (y = 0; y < hauteur; y++) {
 | |
|         for (x = 0; x < largeur; x++) {
 | |
|             int pixel;
 | |
|             fscanf(fichier, "%d", &pixel);
 | |
|             if (pixel == 3 && x > 0 && x < largeur - 1 && y > 0 && y < hauteur - 1) {
 | |
|                 fseek(fichier, -2, SEEK_CUR);
 | |
|                 fprintf(fichier, "5 ");
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     fclose(fichier);
 | |
| }
 | |
| 
 | |
| int main(int argc, char *argv[]) {
 | |
|     if (argc != 2) {
 | |
|         fprintf(stderr, "Usage: %s fichier.pgm\n", argv[0]);
 | |
|         return EXIT_FAILURE;
 | |
|     }
 | |
| 
 | |
|     modifier_image_pgm(argv[1]);
 | |
|     return EXIT_SUCCESS;
 | |
| }
 |