/*      24ビットフルカラー画像を8ビットのモノクローム画像に変換        */

 

画像の解析プログラム

                /* リトルエンディアン ルーチン */

#include<stdio.h>

 

void endeian2(int x){

    int i;

    unsigned char    lit[2];

    for(i=0;i<2;i++){

        lit[i] =x%256;

        x=x/256;

    }

    for(i=0;i<2;i++){

        putchar(lit[i]);

    } 

}

 

void endeian4(int x){

    int i;

    unsigned char    lit[4];

    for(i=0;i<4;i++){

        lit[i] =x%256;

        x=x/256;

    }

    for(i=0;i<4;i++){

        putchar(lit[i]);

    } 

}

 

int main(void)          /* メインプログラム     */

{

unsigned char head[15][4];

unsigned char data[1000][1000][3];

int    haba1,haba2;

int    tate;

int    XXX;

int     i,j,k;

 

/*-------------------------------*/

/*    ファイル入力        */

/*-------------------------------*/

    /*    ファイルヘッダ        */

 

/*    BM    */

head[0][0]=getchar();

head[0][1]=getchar();

 

/*    ファイルサイズ    */

for(i=0;i<4;i++){

    head[1][i]=getchar();

}

/*    未使用    */

for(i=0;i<4;i++){

    head[2][i]=getchar();

}

/*    オフセット    */

for(i=0;i<4;i++){

    head[3][i]=getchar();

}

/*--------------------------------*/

/*        インフォメーションヘッダ    */

 

/*    ヘッダサイズ    */

for(i=0;i<4;i++){

    head[4][i]=getchar();

}

/*    画像幅    */

for(i=0;i<4;i++){

    head[5][i]=getchar();

}

/*画像幅読み込み    */

haba1=0;

for(i=0;i<4;i++){

    haba1=haba1*256+head[5][i];

haba2=(haba1/4)*4;

 

/*    画像高さ    */

for(i=0;i<4;i++){

    head[6][i]=getchar();

}

/*画像高さ読み込み    */

tate=0;

for(i=0;i<4;i++){

    tate=tate*256+head[6][i];

}

 

/*    プレーン数    */

for(i=0;i<2;i++){

    head[7][i]=getchar();

}

 

/*    カラービット    */

for(i=0;i<2;i++){

    head[8][i]=getchar();

}

 

/*    圧縮方式    */

for(i=0;i<4;i++){

    head[9][i]=getchar();

}

 

/*    画像データサイズ*/

for(i=0;i<4;i++){

    head[10][i]=getchar();

}

 

/*    水平解像度    */

for(i=0;i<4;i++){

    head[11][i]=getchar();

}

 

/*    垂直解像度    */

for(i=0;i<4;i++){

    head[12][i]=getchar();

}

 

/*    使用色数    */

for(i=0;i<4;i++){

    head[13][i]=getchar();

}

 

/*-----    画像データ --------    */

XXX=(haba1*3)%4;

    for(j=0;j<tate;j++){

        for(i=0;i<haba1;i++){

            for(k=0;k<3;k++){

            data[j][i][k]=getchar();

            }

        }

        for(i=XXX; (i%4) !=0;i++){

            data[j][i][k]=getchar();

        }

    }

 

/*-------------------------------*/

/*    ファイル出力        */

/*-------------------------------*/

    /*    ファイルヘッダ        */

/*    BM    */

        putchar(head[0][0]);

        putchar(head[0][1]);

 

/*    ファイルサイズ    */

    endeian4(54+(256*4)+(haba2*tate));

 

/*    未使用    */

    endeian4(0);

 

/*    オフセット    */

    endeian4(54+(256*4));

 

/*--------------------------------*/

/*        インフォメーションヘッダ    */

 

/*    ヘッダサイズ    */

    endeian4(40);

 

/*    画像幅    */

    endeian4(haba2);

 

/*    画像高さ    */

    endeian4(tate);

 

/*    プレーン数    */

    endeian2(1);

 

/*    カラービット    */

    endeian2(8);

 

/*    圧縮方式    */

    endeian4(0);

 

/*    画像データサイズ*/

    endeian4(haba2 * tate);

 

/*    水平解像度    */

    for(i=0;i<4;i++){

        putchar(head[11][i]);

    }

 

/*    垂直解像度    */

    for(i=0;i<4;i++){

        putchar(head[12][i]);

    }

 

/*    使用色数    */

    endeian4(256);

 

/*    重要色数    */

    endeian4(0);

 

/*    CLUT    */

    for(i=0;i<256;i++){

        putchar(i);

        putchar(i);

        putchar(i);

        putchar(0);

    }

/*-----------------------*/

/*    画像データ モノクロ化    */

 

    for(j=0;j<tate;j++){

        for(i=0;i<haba1;i++){

                putchar((data[j][i][0]+data[j][i][1]+data[j][i][2])/3);

        }

    }

}

}

/*      プログラム終了------------------------------------      */

 

本・漫画・DVD・アニメ・家電・ゲーム | さまざまな報酬パターン | 共有エディタOverleaf
業界NO1のライブチャット | ライブチャット「BBchatTV」  無料お試し期間中で今だけお得に!
35000人以上の女性とライブチャット[BBchatTV] | 最新ニュース | Web検索 | ドメイン | 無料HPスペース