1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
#include <stdio.h>
#include <stdlib.h>
#include "image.h"
#include "utils.h"
#include "skel.h"
int main(int argc, char **argv)
{
FILE * FILEIN;
FILE * FILEIN2;
FILE * FILEOUT;
unsigned char mot[4];
int longueur, largeur, taille, data;
BMP *image1;
BMP *image2;
BMP *imapt1;
BMP *imapt2;
//unsigned char *bmp;
FILEIN = fopen(argv[1],"rb");
FILEIN2 = fopen(argv[2],"rb");
fread(mot,2,1,FILEIN); //BM
fread(mot,4,1,FILEIN); //taille de l image
taille=convWrd(mot);
fseek(FILEIN,10L,SEEK_SET);
fread(mot,4,1,FILEIN); //longueur de l image
data=convWrd(mot);
fseek(FILEIN,18L,SEEK_SET);
fread(mot,4,1,FILEIN); //hauteur de l image
longueur=convWrd(mot);
fread(mot,4,1,FILEIN);
largeur=convWrd(mot);
printf("%s\t %dx%d : %d octets\n",argv[2],longueur,largeur,taille);
fseek(FILEIN,0,SEEK_SET);
//bmp=(unsigned char *)malloc(taille*sizeof(unsigned char));
unsigned char bmp[taille];
unsigned char entete[data];
fread(entete,data,1,FILEIN);
memcpy(bmp,entete,data*sizeof(unsigned char));
fseek(FILEIN,data,SEEK_SET);
unsigned char in[taille-data];
fread(in,taille-data,1,FILEIN);
for (int i=data; i<taille; i++)
bmp[i]=in[i-data];
image1 = new BMP(longueur, largeur, in);
imapt1 = new BMP(longueur, largeur, in);
image2 = new BMP(longueur, largeur,in);
imapt2 = new BMP(longueur, largeur,in);
fclose(FILEIN);
fseek(FILEIN2,data,SEEK_SET);
fread(in,taille-data,1,FILEIN2);
image2->setData(in);
imapt2->setData(in);
fclose(FILEIN2);
FILEOUT=fopen("out.bmp","wb");
imapt2->getData(in);
for (int j=data; j<taille; j++)
bmp[j]=in[j-data];
fseek(FILEOUT,0,SEEK_SET);
fwrite(&bmp,taille,1,FILEOUT);
fclose(FILEOUT);
return 0;
} |
Partager