www.pudn.com > JpegTest.rar > JPEGAPP.C
#include "jpegdec.h" #include#include char *FileName="image.jpg"; extern char error_string[90]; typedef struct s_BM_header { WORD BMP_id ; // 'B''M' DWORD size; // size in bytes of the BMP file DWORD zero_res; // 0 DWORD offbits; // 54 DWORD biSize; // 0x28 DWORD Width; // X DWORD Height; // Y WORD biPlanes; // 1 WORD biBitCount ; // 24 DWORD biCompression; // 0 = BI_RGB DWORD biSizeImage; // 0 DWORD biXPelsPerMeter; // 0xB40 DWORD biYPelsPerMeter; // 0xB40 DWORD biClrUsed; //0 DWORD biClrImportant; //0 } BM_header; typedef struct s_RGB { BYTE B; BYTE G; BYTE R; } RGB; void exitmessage(char *message) { printf("%s\n",message);exit(0); } void write_buf_to_BMP(BYTE *im_buffer, WORD X_bitmap, WORD Y_bitmap, char *BMPname) { SWORD x,y; RGB *pixel; BM_header BH; FILE *fp_bitmap; DWORD im_loc_bytes; BYTE nr_fillingbytes, i; BYTE zero_byte=0; fp_bitmap=fopen(BMPname,"wb"); if (fp_bitmap==NULL) exitmessage("File cannot be created"); if (X_bitmap%4!=0) nr_fillingbytes=4-((X_bitmap*3L)%4); else nr_fillingbytes=0; BH.BMP_id = 'M'*256+'B'; fwrite(&BH.BMP_id,2,1,fp_bitmap); BH.size=54+Y_bitmap*(X_bitmap*3+nr_fillingbytes);fwrite(&BH.size,4,1,fp_bitmap); BH.zero_res = 0; fwrite(&BH.zero_res,4,1,fp_bitmap); BH.offbits = 54; fwrite(&BH.offbits,4,1,fp_bitmap); BH.biSize = 0x28; fwrite(&BH.biSize,4,1,fp_bitmap); BH.Width = X_bitmap; fwrite(&BH.Width,4,1,fp_bitmap); BH.Height = Y_bitmap; fwrite(&BH.Height,4,1,fp_bitmap); BH.biPlanes = 1; fwrite(&BH.biPlanes,2,1,fp_bitmap); BH.biBitCount = 24; fwrite(&BH.biBitCount,2,1,fp_bitmap); BH.biCompression = 0; fwrite(&BH.biCompression,4,1,fp_bitmap); BH.biSizeImage = 0; fwrite(&BH.biSizeImage,4,1,fp_bitmap); BH.biXPelsPerMeter = 0xB40; fwrite(&BH.biXPelsPerMeter,4,1,fp_bitmap); BH.biYPelsPerMeter = 0xB40; fwrite(&BH.biYPelsPerMeter,4,1,fp_bitmap); BH.biClrUsed = 0; fwrite(&BH.biClrUsed,4,1,fp_bitmap); BH.biClrImportant = 0; fwrite(&BH.biClrImportant,4,1,fp_bitmap); printf("Writing bitmap ...\n"); im_loc_bytes=(DWORD)im_buffer+((DWORD)Y_bitmap-1)*X_bitmap*4; for (y=0;y