チェック関数は、初期イメージのグレースケール マトリックスを、関連する解凍されたイメージと比較します。違いはありませんが、うまく解凍できる画像とそうでない画像があります。
「BMP ファイルを比較してみる」と「ゼルダの画像は最初の 1088 バイトだけが異なるのに対し、胸部の画像は最初の 64 バイトだけが異なる」とはどういう意味ですか?
void restorebmp(int の方法)
{
struct tagBITMAPFILEHEADER bmfh;
struct tagBITMAPINFOHEADER bmih;
struct tagRGBQUAD rgb[256];
char outfile_name[MAXFILE+MAXEXT];
char ext[10];
int i、j;
char gray_bit;
FILE *復元;
for(i=0;i
for(j=0;j
{ int temp=0;
int ビット [8];
for (bit_no = 7; bit_no >= 0; bit_no--)
{ bit[bit_no]=*((char )bit_plane[bit_no]+i wid+j);
if(way!=0 && bit_no<7)
bit[bit_no] = bit[bit_no]^bit[bit_no + 1];
// convert them to decimal values to be saved to pict[i][j]
temp+=bit[bit_no]*pow(2,bit_no);
}
pict[i][j]=一時;
}
// グレー値を変更
for(i=0;i
for(j=0;j
pict[i][j]=p1[pict[i][j]];
符号なし文字温度;
for (i = 0; i < hei/2; i++)
for (j = 0; j < wid; j++)
{
temp = pict[i][j];
pict[i][j] = pict[hei-i-1][j];
pict[hei-i-1][j] = temp;
}
// BITMAPFILEHEADER を作成します
bmfh.wType = 0x4d42;
bmfh.dwSize = wid*hei+1078;
bmfh.wReserved1 = 0;
bmfh.wReserved2 = 0;
bmfh.dwOffBits = 0x0436;
// BITMAPINFOHEADER を作成します
bmih.dwSize = 40;
bmih.dwWidth = wid;
bmih.dwHeight = hei;
bmih.wPlanes = 1;
bmih.wBitCount = 8;
bmih.dwCompression = 0;
bmih.dwSizeImage = hei*wid;
bmih.dwXPelsPerMeter = 0;
bmih.dwYPelsPerMeter = 0;
bmih.dwClrUsed = 0;
bmih.dwClrImportant = 0;
// カラーパレットを作成
char tempc[256];
int カウント = 0;
for(i=0;i<32;i++)
for(j=0;j<8;j++)
{tempc[8*i+j]=bit(j,強度[i]);
もし (tempc[8*i+j]==1)
{ rgb[カウント].bBlue=(符号なし文字)(8*i+j);
rgb[count].bGreen=(unsigned char)(8*i+j);
rgb[count].bRed=(unsigned char)(8*i+j);
rgb[count].bReserved=0;
カウント++;
}
}
if(count<256)
for(i=カウント;i<256;i++)
{ rgb[i].bBlue=0;
rgb[i].bGreen=0;
rgb[i].bRed=0;
rgb[i].bReserved=0;
}
// bmp ファイルを作成
strcpy(outfile_name,orig_name);
sprintf(ext,"%d_gn.bmp",way);
strcat(outfile_name,ext);
if ( (restore = fopen (outfile_name, "wb")) == NULL )
{ printf ("Cannot create bmp file");
getch();
exit (1);
}
fwrite (&bmfh, sizeof(struct tagBITMAPFILEHEADER), 1, 復元);
fwrite (&bmih, sizeof(struct tagBITMAPINFOHEADER), 1,restore);
for (i=0; i<256; i++)
fwrite (&rgb[i], sizeof(struct tagRGBQUAD), 1, 復元);
fseek (復元、0x0436、SEEK_SET);
for(i=0;i
for(j=0;j
fwrite(&pict[i][j],sizeof(pict[i][j]),1,restore);
fclose(復元);
cprintf("bmp ファイルの復元を完了\n\r");
for(i=0;i<8;i++)
無料 (bit_plane[i]);
for(i=0;i<7;i++)
無料 (refer_plane[i]);
}