c言語によるwindows bitmap画像の色成分(R,G,B)を分離するプログラム
Q&A
c言語の質問ですWindows Bitmap形式で保存
された画像ファイル bmpsample.bmp を読み込み,
Red,Blue,Greenのいづれかの色情報のみを残し
て他の色情報を排除した画像を作成しなさい。
#include
#include
typedef struct {
unsigned short bfType;
unsigned int bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned int bfOffBits;
} BitmapFileHeader;
typedef struct {
unsigned int biSize;
int biWidth;
int biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned int biCompression;
unsigned int biSizeImage;
int biXPixPerMeter;
int biYPixPerMeter;
unsigned int biClrUsed;
unsigned int biClrImportant;
} BitmapInfoHeader;
int main(void) {
FILE *fp;
BitmapFileHeader fileh;
BitmapInfoHeader infofileh;
fp = fopen("bmpsample.bmp", "rb");
if (fp == NULL) {
fprintf(stderr, "Can't write file\n");
exit(1);
}
fread(&(fileh.bfType), 2, 1, fp);
fread(&(fileh.bfSize), 4, 1, fp);
fread(&(fileh.bfReserved1), 2, 1, fp);
fread(&(fileh.bfReserved2), 2, 1, fp);
fread(&(fileh.bfOffBits), 4, 1, fp);
fread(&(infofileh.biSize), 4, 1, fp);
fread(&(infofileh.biWidth), 4, 1, fp);
fread(&(infofileh.biHeight), 4, 1, fp);
fread(&(infofileh.biPlanes), 2, 1, fp);
fread(&(infofileh.biBitCount), 2, 1, fp);
fread(&(infofileh.biClrImportant), 4, 1, fp);
fread(&(infofileh.biSizeImage), 4, 1, fp);
fread(&(infofileh.biXPixPerMeter), 4, 1, fp);
fread(&(infofileh.biYPixPerMeter), 4, 1, fp);
fread(&(infofileh.biClrUsed), 4, 1, fp);
fread(&(infofileh.biClrImportant), 4, 1, fp);
}
ここまであっているかもわかりませんが、この先が全くわかりません。教えていただけると幸いです。