- ベストアンサー
bmpファイルの解析
Cプログラムでbmpファイルを読み込み 最大輝度(仮にbrightnessとします)とその座標(仮にx,yとします)を吐き出させるプログラムを作りたいのですが、うまくいきません。 アドバイスしていただければ助かります。 宜しくお願いします。 以下に作成したソースを載せています。 #include<stdlib.h> #include<stdio.h> #include<string.h>/*strcat関数で必要*/ unsigned char brightness; int x_size,y_size,/*imageの横画像数、縦画素数*/ x,y,/*ループ変数*/ max_brightness=0,/*最大輝度*/ max_x,/*最大輝度時のx座標*/ max_y;/*最大輝度時のy座標*/ int main(int argc,char* argv[]) { FILE *fp; char buffer[60000]; char file_name[256]; printf("ファイル名入力="); gets(file_name); strcat(file_name,".bmp"); fp = fopen(file_name, "r"); for(y=0; y<y_size; y++){ for(x=0; x<x_size; x++){ brightness=getc(fp); if(brightness>max_brightness) max_brightness=brightness; max_y=y; max_x=x; } } printf("最大輝度=%d\n",max_brightness); printf("(x,y)=(%d,%d)\n",max_x,max_y); if ( ! fp ) { printf("ファイルが開けません\n"); return 1; } fclose(fp); return 0; }
- みんなの回答 (3)
- 専門家の回答
お礼
求めたいのは輝度です。 輝度の計算上小数点以下も使うことは分かっていましたが 整数部分のみでも画像は再構成するだろうと思ってました。 やはりきちんと合わせておく必要があるのですね。 ご指摘のデータ型とbrigth[][]の箱の数を適当な値にしていたのですが、具体的な幅と高さに直すことで解決しました。 アドバイス本当にありがとうございました! とても助かりました!