Statistiques
| Révision :

root / TrouNoir / pgm2ascii.c @ 305

Historique | Voir | Annoter | Télécharger (1,04 ko)

1 305 equemene
#include <stdio.h>
2 305 equemene
#include <stdlib.h>
3 305 equemene
4 305 equemene
#define MYSIZE 24
5 305 equemene
#define UCHAR_MAX 255
6 305 equemene
7 305 equemene
void sauvegarde_pgm(char nom[MYSIZE],unsigned int *image,int dim)
8 305 equemene
{
9 305 equemene
  FILE            *sortie;
10 305 equemene
  unsigned long   i,j;
11 305 equemene
12 305 equemene
  sortie=fopen(nom,"w");
13 305 equemene
14 305 equemene
  fprintf(sortie,"P5\n");
15 305 equemene
  fprintf(sortie,"%i %i\n",dim,dim);
16 305 equemene
  fprintf(sortie,"255\n");
17 305 equemene
18 305 equemene
  for (j=0;j<dim;j++) for (i=0;i<dim;i++)
19 305 equemene
    {
20 305 equemene
      fputc(image[i+dim*j],sortie);
21 305 equemene
    }
22 305 equemene
23 305 equemene
  fclose(sortie);
24 305 equemene
}
25 305 equemene
26 305 equemene
void lecture_pgm(char nom[24])
27 305 equemene
{
28 305 equemene
29 305 equemene
  FILE            *entree;
30 305 equemene
  unsigned long   i,j;
31 305 equemene
  char MyType[MYSIZE],g,c;
32 305 equemene
  unsigned int MyX,MyY,MyDyn,p;
33 305 equemene
  char map[10] = " .,:;ox%#@";
34 305 equemene
35 305 equemene
  entree=fopen(nom,"r");
36 305 equemene
  fscanf(entree," %s\n%d %d\n%d\n",MyType,&MyX,&MyY,&MyDyn);
37 305 equemene
38 305 equemene
  printf("Image de type %s, de taille %d*%d avec dynamique %d\n",
39 305 equemene
         MyType,MyX,MyY,MyDyn);
40 305 equemene
41 305 equemene
  for (j=0;j<MyY;j++)
42 305 equemene
    {
43 305 equemene
      for (i=0;i<MyX;i++)
44 305 equemene
        {
45 305 equemene
          g=fgetc(entree);
46 305 equemene
          p=2*(char) ((g < 0) ? (UCHAR_MAX - g) : g);
47 305 equemene
          c=map[p*10/256];
48 305 equemene
          printf("%c%c",c,c);
49 305 equemene
        }
50 305 equemene
      printf("\n");
51 305 equemene
    }
52 305 equemene
53 305 equemene
  fclose(entree);
54 305 equemene
}
55 305 equemene
56 305 equemene
int main(int argc,char **argv)
57 305 equemene
{
58 305 equemene
  lecture_pgm(argv[1]);
59 305 equemene
}