DEV/BUT1/CONTROLE/CM3/exo1/exo1.c

51 lines
1.4 KiB
C
Raw Normal View History

2024-02-01 13:55:03 +01:00
#include <stdio.h>
#include <stdlib.h>
void modifierImage(char *nomFichier) {
int pixel, largeur, hauteur, intensiteMax;
char commentaire[256],enTete[3];
FILE *fichier = fopen(nomFichier, "r+");
if (fichier == NULL) {
fprintf(stderr,"Impossible d'ouvrir le fichier !");
return;
}
/* Lire l'en-tête */
fscanf(fichier, "%2s", enTete);
if (enTete[0] != 'P' || enTete[1] != '2') {
printf("Le fichier n'est pas au format PPM ASCII.\n");
fclose(fichier);
return;
}
/* Ignorer les commentaires s'il y en a*/
while (fgetc(fichier) == '#') {
fgets(commentaire, sizeof(commentaire), fichier);
}
/* Lire les dimensions et l'intensité maximale*/
fscanf(fichier, "%d %d %d", &largeur, &hauteur, &intensiteMax);
/* Modifier les pixels du message en blanc*/
fseek(fichier, ftell(fichier), SEEK_SET); /* Revenir au début des données d'image*/
while ((pixel = fgetc(fichier)) != EOF) {
/* Modifier uniquement les pixels correspondant au message (intensité 3)*/
if (pixel == 3) {
fseek(fichier, -1, SEEK_CUR);
fprintf(fichier, "5 ");
}
}
fclose(fichier);
}
int main(void) {
char nomFichier[] = "image.pgm";
modifierImage(nomFichier);
printf("Modification terminée avec succès.\n");
return EXIT_SUCCESS;
}