永发信息网

c语言调用图片

答案:3  悬赏:10  手机版
解决时间 2021-02-19 13:07
c语言调用图片
最佳答案
图片也是一个文件,
1.你是要打开图片吗?(把图像显示出来?)
2.还是只需要图片文件。
如果是1,那么你需要看.bmp的编码方式和C库的图像类函数
如果是2,那么你就可以用fopen,fread,fwrite,fprintf,fscanf等调用即可。
全部回答

#include
#include
#include
#include void selectpage(char page)
{
union REGS r;
r.x.ax=0x4f05;
r.x.bx=0;
r.x.dx=page;
int86(0x10,&r,&r);
} unsigned char set_SVGA_mode(int Vmode)
{
union REGS r;
r.x.ax=0x4f02;
r.x.bx=Vmode;
int86(0x10,&r,&r);
return(r.h.ah);
}unsigned int get_SVGA_mode()
{
union REGS r;
r.x.ax=0x4f03;
int86(0x10,&r,&r);
return(r.x.bx);
}void main()
{
char buffer[640],page_new=0,page_old=0;
int i,j,k,n,r,g,b,savemode;
long position,width,length;
FILE *fp;
puts("This is a 256 color bmp viewer!");
puts("Input filename:");
gets(buffer);
if((fp=fopen(buffer,"rb"))==NULL)
{
printf("can't open file:%s",buffer);
return;
}
fseek(fp,28,SEEK_SET);
fread(&i,2,1,fp);
if(i!=8)
{
puts("Not a 256 color bitmap!");
fclose(fp);
exit(0);
}

fseek(fp,18,SEEK_SET);
fread(&width,4,1,fp);
savemode=get_SVGA_mode();
set_SVGA_mode(0x101);
fseek(fp,54,SEEK_SET);
for(i=0;i<256;i++)
{
b=fgetc(fp);
g=fgetc(fp);
r=fgetc(fp);
outportb(968u,i);
outportb(969u,r>>2);
outportb(969u,g>>2);
outportb(969u,b>>2);
fgetc(fp);
}

k=(width%4)?(4-width%4):0;
for(j=length-1;j>=0;j--)
{
fread(buffer,width,1,fp);
for(i=0,n=0;i {
position=j*640l+i;
page_new=position/65536l;
if(page_new!=page_old)
{
selectpage(page_new);
page_old=page_new;
}
pokeb(0xa000,position%65536l,buffer[n]);
}
fseek(fp,k,SEEK_CUR);
}
fclose(fp);
bioskey(0);
set_SVGA_mode(savemode);
}
c语言调用图片函数
据我所知Matlab有,imshow(),c好象没有,c只能先将图片读到内存中,经过相关处理后以一定的格式保存到硬盘中,然后再打开图片.
读图和存图需要有专门的函数,这些可以参考:
unsigned char* ReadBMPData(int Width, int Height, char *fname)//图像的宽和高,图像的位置(包括后缀)
{
unsigned char* image = new unsigned char[Width*Height];
FILE *fp;
fp = fopen(fname, "rb");
fread(image, 1, Width*Height, fp);
fclose(fp);
return image;
}
///////////////////////////
void WriteRawData(unsigned char* image, int Width, int Height, char *fname)
{
FILE *fp;
fp = fopen(fname, "wb");
fwrite(image, 1, Width*Height, fp);
fclose(fp);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
英国最出名的女歌手
谁有《出马仙香艳史》145章以后的 ,发下
万信通手机城在哪里啊,我有事要去这个地方
【steel手表是什么牌子】...手表前面是BREIL
大龙商店这个地址在什么地方,我要处理点事
男生纹花仙子代表什么意思
是support to do 还是 support doing
怎么把等边三角形分成三个相同的梯形
忠旺铝材(修江明珠小区东南)这个地址在什么地
【消防设施有哪些】常见的消防设施有哪些?
早上冲炼奶当早餐喝可以减肥吗
求十的个好的外国伞的品牌
喜满堂酒楼在什么地方啊,我要过去处理事情
直销要交门槛费吗 直销
梦见火上一个大锅火烧的很旺
推荐资讯
墙上孩子乱画乳胶漆能盖住吗
为什么我老公很喜欢打游戏?每天只要一有空他
新闻剪辑人员?该怎么去学习镜头的组接,画面
已知平行四边形的3个顶点A(3,-2),B(5,2),
现在面试的是房地产销售,不会开电瓶车咋么办
大连香榭里名流汇火锅城是自助吗,多少钱
正宗原味汤粉王地址在哪,我要去那里办事
我阿修罗33级 请问纯刷图加点详细?
我送我暗恋的人礼物。他问我为什么不能送给别
先驱862功放主音箱输出是哪两个孔?
dnf电动小马达泰迪礼盒怎么获得
2016年考马山中学要多少分,每科至少要多少分
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?