#include int main(int argc, char **argv){ FILE *fp; char filename[255]; if (argv[1]){ strcpy (filename, argv[1]); } if ((fp = fopen (filename, "rb")) == NULL){ fp = stdin; } fseek(fp,0x1C,SEEK_SET); if (fgetc(fp) != 0x10){ fprintf(stderr,"Not a 16-bit bmp file.\n"); exit(1); } unsigned long imgwidth; unsigned long imgheight; fseek(fp,0x12,SEEK_SET); fread (&imgwidth,4,1,fp); fread (&imgheight,4,1,fp); printf ("P3\n%d %d\n31\n\n",imgwidth,imgheight); //ヘッダ長調べて読み飛ばし fseek(fp,0x0A,SEEK_SET); int startat=fgetc(fp); fseek(fp,startat,SEEK_SET); unsigned short filebit; unsigned short rval=0; unsigned short gval=0; unsigned short bval=0; int realbitwidth=imgwidth*2; int bitwidth = (realbitwidth%4)?((realbitwidth/4+1)*4):(realbitwidth); int i=0; while (i> 11; gval = filebit << 6; gval = gval >> 11; rval = filebit << 1; rval = rval >> 11; printf ("%d %d %d\n",rval,gval,bval); } i++; } fclose (fp); }