Lecture et ecriture d'une image pgm double pointeur

Résolu
وهران سيما Messages postés 3 Date d'inscription jeudi 21 janvier 2016 Statut Membre Dernière intervention 23 janvier 2016 - Modifié par BunoCS le 21/01/2016 à 09:30
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 21 janv. 2016 à 09:35
Bonjour,
Dans le cadre d mon projet sur le traitement des images dans langage c,je dois lire une image PGM puis recopier les valeurs de ses pixels dans un autre fichier
exemple du pgm:
P5
512 512
255
.....
ligne 1 :correspond au "magic number"
ligne 2 :hauteur largeur
ligne 3:la valeur maximale qu'un pixel peut prendre
à la suite valeur de chaque pixel

quelle est le prblm de ce code svp


#include <stdio.h>
     #include <stdlib.h>
    #include <math.h>
    #include <malloc.h>
    int main()
    {
    int nbl,nbc;
    int i,j;
     char ** image;
    char ligne[100];
    FILE* voiture;
    voiture=fopen("test.pgm","r" );
    if(voiture==NULL) {printf("ERROR" ); return(0);}
    for(i=0;i<1;i++)
    {
     fgets(ligne,100,voiture);
     printf("\n%s\n",ligne);
    }
    fscanf(voiture,"%d %d %d\n",&nbc,&nbl,&i);
    printf("nb ligne:%d\nnb col:%d\n %d\n",nbl,nbc,i);
    image=(char**) malloc(nbl*sizeof(*image));
    for(i=0;i<nbl;i++){
 
     image[i]=(char*) malloc(nbc*sizeof(*image[i]));
  }
    for(i=0;i<nbl;i++){
 
     for(j=0;j<nbc;j++){
  
      fscanf(voiture,"%c",image[i]+j);
     printf("%c\t",image[i][j]);
   }
   }
     // for(i=0;i<n;i++)
  //fread (image[i], sizeof(char), m, voiture);
    //for(i=0;i<nbl;i++)
     //for(j=0;j<nbc;j++)
      //printf("%c\t\n",image[i]+j);
    
    FILE* voiture2;
    voiture2=fopen("voiture2.pgm","wt" );
    if(voiture2==NULL) {printf("ERROR2" ); return(0);}
    fprintf(voiture2,"P2\n" );
    fprintf(voiture2,"%d %d\n255 \n",nbl,nbc);
  //  int s=n+m;
    for(i=0;i<nbl;i++)
     for(j=0;j<nbc;j++)
     
      fprintf(voiture2,"%c",image[i][j]);
    
 for(i=0;i<nbl;i++)
     free(image[i]);
    free(image);
    fclose(voiture);
    fclose(voiture2);
   
  
    system("xnview.exe voiture2.pgm");
     return(0);
   
    }


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.

1 réponse

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
21 janv. 2016 à 09:35
Hello,

J'ai rajouté les balises 'code' pour plus de lisibilité (cf. ton message).

Pourquoi dis-tu qu'il y a un problème?

Cela ressemble beaucoup à ceci : http://codes-sources.commentcamarche.net/forum/affich-1590121-lire-et-ecrire-une-image-en-format-pgm
0
Rejoignez-nous