日記 intime o'
bmp(24bit) - ファイルフォーマット 2008/5/26(Mon)画像BMP(24bit)の中身を書いてみる。数字は 特に何もない限り10進法。0xが頭に付く数字 は16進法。単位はbyte。 (1) データは大きく3つに分けられて上から順に
ファイルヘッダ | offset:0x00 | data size:14(=0x0e) |
情報・ヘッダ | offset:0x0e | data size:40(=0x28) |
データ部 | offset:0x36 | data size:file size |
ファイルタイプ | data size:2bit | BMPの場合は"BM" |
ファイルサイズ | data size:4bit | 画像ファイルサイズ(bit) |
予約領域A | data size:2bit | いつか使うメモリ領域其の壱 初期は0 |
予約領域B | data size:2bit | 〃 其の弐 初期は0 |
データ部のオフセット | data size:4bit | オフセット。(埋め合わせ) |
情報ヘッダ | size data size:4bit 情報ヘッダのサイズ。 | 0x28 |
画像の幅 | data size:4bit 画像の幅 単位はpixel | |
画像の高さ | data size:4bit 画像の高さ 単位はpixel | |
プレーン数 | data size:2bit 何か色の穏やかさみたいな。 | 1 |
色数/画素 | data size:2bit 画素数 単位はbit | 24 |
圧縮形式 | data size:4bit | 0x0 |
画像サイズ | data size:4bit | データ部サイズ |
水平解像度 | data size:4bit 単位はppm | 0 |
垂直解像度 | data size:4bit 単位はppm | 0 |
パレット色数 | data size:4bit | 0 |
パレットindex | data size:4bit | 0 |
/**
* "test.bmp"を暗転した画像を"out.bmp"として作る
**/
#include "stdio.h"
main(){
//変数宣言
FILE *fp,*fp2;//ファイルポインタ
char c;//読み込んだ文字(1文字)
int i;//cが何文字目か
fp=fopen("test.bmp","rb");//ファイルを開く
fp2=fopen("out.bmp","wb");
for(i=0;fread(&c,sizeof(char),1,fp);i++){//cに1文字ずつ読み込み
c=i<36?c:255-c; //36文字目まではヘッダなので弄らない。
//それ以降はc=255-c
fwrite(&c,sizeof(char),1,fp2);//fp2に出力
}
fclose(fp); //ファイルのクローズ
fclose(fp2);
}
暗転という変換の処理は
輝度を255/2を軸に線対称に移動させればよい。
(0は255に、255は0に。tは255-tに。)
2010/3/19 割と重要な手直し。
コメ(0) | トラ(0)
(c)Kero's World