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;
|
|
}
|