#include<stdio.h>
#include<dir.h>
#include<dos.h>
#include<graphics.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
char *buffer; /ar *malloc();
char bmp_to_dat(char *bmp,char *dat)
{ unsigned char c[8],scan_times,scan_pixs;
unsigned char workpos;
int i,j,k,n,nowpos,iw,ih;
static int color[16]={0,4,2,6,1,5,3,7,8,12,10,14,9,13,11,15}; unsigned char workline[640],scanline[640];
FILE *fp,*targetfp;
union
{ unsigned char value ;
struct
{ unsigned cl:4;
unsigned ch:4;
}color;
}mycolor;
if((fp=fopen(bmp,"rb"))==NULL)
return 0;
targetfp=fopen(dat,"wb");
fseek(fp,18,SEEK_SET);
iw=0;
ih=0;
fread(&iw,4,1,fp);
fread(&ih,4,1,fp);
if(iw==0&&ih==0&&iw>640&&ih>480)
{
fclose(fp);
fclose(targetfp);
return 0;
} iw--;
ih--;
scan_times=iw/8+1;
scan_pixs=scan_times*4;
fputc(iw%256,targetfp);
fputc(iw/256,targetfp);
fputc(ih%256,targetfp);
fputc(ih/256,targetfp); fseek(fp,-scan_pixs,SEEK_END);
for(j=0;j<=ih;j++)
{ nowpos=0;
fread(scanline,scan_pixs,1,fp); fseek(fp,-scan_pixs*2,SEEK_CUR);
for(n=3;n>=0;n--)
{ for(i=0;i<scan_times;i++)
{ workpos=0;
for(k=0;k<4;k++)
{ mycolor.value=https://bbs.csdn.net/topics/scanline[i*4+k]; c[k*2]=color[mycolor.color.ch]; c[k*2+1]=color[mycolor.color.cl];
}
for(k=0;k<8;k++) workpos+=(c[k]>>n&1)<<(7-k); workline[nowpos]=workpos;nowpos++;
}
}
fwrite(workline,scan_pixs,1,targetfp);
}
fclose(fp);
fclose(targetfp);
return 1; }
main()
{ int n;
int gdriver=VGA;
int gmode=VGAHI;
char bmpfile[13],_16file[13]={0};
FILE *fp;
struct ffblk *ff;
initgraph(&gdriver,&gmode,"C:\\BORLANDC\\BGI");
setbkcolor(BLUE);
printf("Now begin!\n");
puts("Please select:");
printf("0--exit,1--bitmap file\n");
while(1)
{ n=getch();
switch(n)
{ case 0:continue;
case '0':exit(0);
case '1':
{printf("Input bmp file:");
gets(bmpfile);
goto OUT;
}
}
}
OUT:
strcpy(_16file,"dat"); if(!bmp_to_dat(bmpfile,_16file))
{ puts("Can not open file!\n");
getch();
closegraph();
exit(0);
}
fp=fopen(_16file,"rb"); findfirst(_16file,ff,FA_ARCH); if((buffer=malloc(ff->ff_fsize))==NULL) exit(0);
n=0;
while(!feof(fp))
{ buffer[n]=fgetc(fp);
n++;
}
cleardevice();
putimage(100,100,buffer,COPY_PUT);
getch();
closegraph();
free(buffer);
fclose(fp);
return 0;}
代碼運行出來之后,圖片是亂碼,論壇上顯示,在2004年可以使用,為什么現在我不可以用,編程論壇
uj5u.com熱心網友回復:
Turbo C,這么老的IDE,誰想幫你都難。最好用大眾化的IDE,好交流,有問題也容易搜索解決。。
uj5u.com熱心網友回復:
學校逼迫,不然誰會用這種東西
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/268516.html
標籤:C語言
下一篇:請問多執行緒,讀操作需要加鎖嗎?
