http://dixq.net/rp/54.html
を参考にして、行なっていたのですが、うまく読み込まれません。
おそらく、freadではなくFileRead_readを使っているせいだと思うのですが、
DxaEncodeを使うため、ファイル入出力にはDXlibで行いたいです。
最終結果として、Pixelにhantei0.bmpの全ての点情報が入っていれば成功ですが、
実際はoutput.pngのように表示されてしまいます。
画像サイズは512*512です。
//GV.h
/* 2値化した情報を入れるための配列を用意 */
GLOBAL BYTE Pixel[STAGE_MAX][MAP_BMP_Y][MAP_BMP_X];
GLOBAL img_form_t img[MAP_BMP_Y][MAP_BMP_X];
//struct.h
/* ビットマップの色情報を格納するための構造体 */
typedef struct{
unsigned char col[3];
}img_form_t;
//define.h
/* ビットマップのヘッダサイズ */
#define HEAD 54
/* ビットマップのヘッダサイズ */
#define MAP_BMP_X 512
#define MAP_BMP_Y 512
//load.cpp
//マップチップの当たり判定読み込み
void load_mapchip_check(){
int i,s_stage,fp,x,y,c,t;
int sum;
char fname[255]={};
unsigned char data[MAP_BMP_X*MAP_BMP_Y*3+HEAD];
for(s_stage=0;s_stage<STAGE_MAX;s_stage++){
sprintf(fname,"dat/img/mapchip/hantei%d.bmp",s_stage);
fp = FileRead_open(fname);//ファイル読み込み
FileRead_read( data, FileRead_size( fname ), fp );
t=HEAD;
for(y=MAP_BMP_Y-1;y>=0;y--){
for(x=0;x<MAP_BMP_X;x++){
for(c=0;c<3;c++){
img[y][x].col[c]=data[t];
t++;
}
}
}
for(y=0;y<MAP_BMP_Y;y++){
for(x=0;x<MAP_BMP_X;x++){
sum = 0;
//色の輝度平均を計算
for(c=0;c<3;c++){
sum += img[y][x].col[c];
}
sum /= 3;
//0~255の輝度の平均が128以上なら(明るいなら)0、未満なら(暗いなら)1
if( sum >= 128){
Pixel[s_stage][y][x] = 0;
} else {
Pixel[s_stage][y][x] = 1;
}
}
}
FileRead_close(fp);
}
}
//graph.cpp
for(int y=0;y<MAP_BMP_Y;y++){
for(int x=0;x<MAP_BMP_X;x++){
if( Pixel[0][y][x] == 1){
DrawPixel(x,y,WHITE);
}
}
}