日記「芦」
If the code and the comments disagree, then both are probably wrong. - Norm Schryer 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