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
| unsigned char*Bitmap::Open(char * filename, int * largeur, int * hauteur)
{
FILE * file;
long taille;
unsigned char * bmp;
struct
{
char type[2];
int dim[2];
} head;
file = fopen(filename,"rb");
if (!file) return NULL;
fread(head.type,1,2,file);
if ((head.type[0]!='B') || (head.type[1] != 'M'))
{ return NULL; }
fseek(file,18,SEEK_SET);
fread(head.dim,sizeof(int),2,file);
*largeur = head.dim[0];
*hauteur = head.dim[1];
taille = head.dim[0]*head.dim[1]*3;
bmp = new unsigned char[taille];
//bmp = (char*) malloc(taille);
if (!bmp)
{ return NULL; }
fseek(file,54,SEEK_SET);
fread(bmp,1,taille,file);
long k=0;
unsigned char t;
while (k<taille)
{
t=*(bmp+k+2);
*(bmp+k+2)=*(bmp+k);
*(bmp+k)=t;
k+=3;
}
fclose(file);
return bmp;
} |
Partager