/* ========================================================= */

/*      画像処理の枠組み                                     */

/*              8bit BMP を読み込み,                        */

/*              ラスタデータを一旦プログラム内に蓄え,       */

/*              そのまま出力するプログラム                   */

/*                   モノクロ反転ver                          */

/*                                                                    */

/*                      2003.11.26      i-0208 上村 健太郎            */

/*                                                                    */

/* ========================================================= */

 

#include<stdio.h>

 

int main()

{

        /* ヘッダー格納用配列 */

                unsigned char head[15][4];

 

        /* 画像のラスタデータ格納用配列 */

                unsigned char data1[1000][1000];        /* 原データ */

                unsigned char data2[1000][1000];        /* 処理結果 */

 

        /* CLUT格納用配列 */

                unsigned char clut[256][4];

 

                int i,j;

                int haba,tate;

 

/* ======================================================== */

/*      ファイルの読み込み:                                 */

/* ======================================================== */

 

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

/* headの読み込み:                  */

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

/*  ファイルヘッダの読み込み    */

 

/*  'BM'の読み込み(2bytes)  */

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

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

               

/*  ファイルサイズの読み込み(4bytes)  */

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

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

        }

 

/*  未使用分の読み込み(4bytes)  */

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

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

        }

 

/*  オフセットの読み込み(4bytes)  */

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

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

        }

       

 

/*  インフォメーションヘッダの読み込み  */

 

/*  ヘッダサイズの読み込み(4bytes)  */

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

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

        }

       

/*  「画像の幅」の読み込み(4bytes)  */

        for(i=3;i>=0;i--){

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

        }

        haba=0;

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

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

        }

 

/*  「画像の高さ」の読み込み(4bytes)  */

        for(i=3;i>=0;i--){

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

        }

        tate=0;

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

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

        }

 

/*  プレーン数の読み込み(2bytes)  */

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

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

        }

 

/*  カラービット数の読み込み(2bytes)  */

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

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

        }

 

/*  圧縮方式の読み込み(4bytes)  */

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

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

        }

 

/*  画像データサイズの読み込み(4bytes)  */

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

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

        }

 

/*  水平解像度の読み込み(4bytes)  */

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

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

        }

 

/*  垂直解像度の読み込み(4bytes)  */

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

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

        }

 

/*  使用する色数の読み込み(4bytes)  */

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

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

        }

 

/*  重要色数の読み込み(4bytes)  */

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

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

        }

 

 

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

/* CLUTの読み込み:                    */

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

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

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

                        clut[j][i]=getchar();

                }

        }

 

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

/* ラスタデータの読み込み:            */

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

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

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

                                data1[j][i]=getchar();

                }

        }

 

/* =================================================================== */

/* (画像処理の本体)                                                    */

/*                                                                     */

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

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

                        data2[j][i] = 255-data1[j][i];

                }

        }

/*                                                                     */

/* =================================================================== */

 

/* ======================================================== */

/*      ファイルの書き出し:                                 */

/* ======================================================== */

 

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

/* headの書き出し:                  */

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

 

/*  ファイルヘッダの書き出し  */

 

/*  'BM'の書き出し(2bytes)  */

        putchar(head[0][0]);

        putchar(head[0][1]);

 

/*  ファイルサイズの書き出し(4bytes)  */

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

                putchar(head[1][i]);

        }

 

/*  未使用分の書き出し(4bytes)  */

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

                putchar(head[2][i]);

        }

 

/*  オフセットの書き出し(4bytes)  */

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

                putchar(head[3][i]);

        }

 

 

/*  インフォメーションヘッダの書き出し  */

 

/*  ヘッダサイズの書き出し(4bytes)  */

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

                putchar(head[4][i]);

        }

 

/*  「画像の幅」の書き出し(4bytes)  */

        for(i=3;i>=0;i--){

                putchar(head[5][i]);

        }

 

/*  「画像の高さ」の書き出し(4bytes)  */

        for(i=3;i>=0;i--){

                putchar(head[6][i]);

        }

 

/*  プレーン数の書き出し(2bytes)  */

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

                putchar(head[7][i]);

        }

 

/*  カラービット数の書き出し(2bytes)  */

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

                putchar(head[8][i]);

        }

 

/*  圧縮方式の書き出し(4bytes)  */

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

                putchar(head[9][i]);

        }

 

/*  画像データサイズの書き出し(4bytes)  */

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

                putchar(head[10][i]);

        }

 

/*  水平解像度の書き出し(4bytes)  */

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

                putchar(head[11][i]);

        }

 

/*  垂直解像度の書き出し(4bytes)  */

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

                putchar(head[12][i]);

        }

 

/*  使用する色数の書き出し(4bytes)  */

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

                putchar(head[13][i]);

        }

 

/*  重要色数の書き出し(4bytes)  */

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

                putchar(head[14][i]);

        }

 

 

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

/* CLUTの書き出し:                    */

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

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

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

                        putchar(clut[j][i]);

                }

        }

 

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

/* ラスタデータの書き出し:            */

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

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

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

                                putchar(data2[j][i]);

                }

        }

}

 

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