|
Compression==COMPRESSION) fread(RGBQUAD,SIZE-OF-RGBQUAD,NUM-COLOR,fLayer); else{ fclose(fLayer); printf(File %s is not fit for this program!\n,fn-layer); getch(); exit(1); } } else{ printf(File %s does not exist!\n,fn-layer); getch(); exit(2); } if( (fOrigin=fopen(fn-org,rb))!=NULL) { fread(& BITMAPFILEHEADER,SIZE-OF-BITMAPFILEHEADER,1,fOrigin); fread(& BITMAPINFOHEADER,SIZE-OF-BITMAPINFOHEADER,1,fOrigin); if( BITMAPFILEHEADER.bfType1==B && BITMAPFILEHEADER.bfType2==M && BITMAPINFOHEADER.biWidth==WIDTH && BITMAPINFOHDADER.biHeight==NUM-LINE && BITMAPINFOHEADER.biBitCount==BITS-PER-PIXEL && BITMAPINFOHEADER.biCompression==COMPRESSION) fread(RGBQUAD,SIZE-OF-RGBQUAD,NUM-COLOR,fOrigin); else { fclose(fOrigin); printf(File %s is not fit for this program!\n,fn-org); getch(); exit(3); } } else { printf(File %s does not exist!\n,fn-org); getch(); exit(4); } if( (fResult=fopen(fn-result,wb))!=NULL){ fwrite(&BITMAPFILEHEADER,SIZE-OF-BITMAPFILEHEADER,1,fResult); fwrite(& BITMAPINFOHIADER,SIZE-OF-BITMAPINFOHEADER,1,fResult); fwrite(RGBQUAD,SIZE-OF-RGBQUAD,NUM-COLOR,fResult); } else { printf(File %s open error!\n,fn-result); getch(); exit(5); } for(line=0;line<NUM-LINE;line++){ printf(line=%d\n,line); cur-offset=(unsigned long int)PIXEL-DATA-OFFSET+(unsigned long int)BYTE- PER-LINE*line; fseek (fLayer,cur-offset,SEEK-SET); fseek (fOrigin,cur-offset,SEEK-SET); for(i-byte=0;i-byte<BYTE-PER-LINE;i-byte++) { fread(&tmp-byte1,1,1,fLayer); fread(&tmp-byte2,1,1,fOrigin); for(i-pixel=0;i-pixel<PIXEL-PER-BYTE;i-pixel++) { x=i-byte*PIXEL-PER-BYTE+i-pixel; if(x<WIDTH) { h[x]=(unsigned char) (tmp-byte1<<(BITS-PER-PIXEL*i-pixel) ) /((unsigned char)0x80>>(BITS-PER-PIXEL-1)); org-color[x]=(unsigned char) (tmp-b 上一页 [1] [2] [3] [4] [5] 下一页
|