㈠ 如何用c语言读取图片
#include
using namespace std;
#define Twoto1(i,j,w) i*w+j
void createimage(unsigned char *&img, int w, int h)
{img = new unsigned char[w*h];}
void delateimage(unsigned char*img)
{delete []img;}
void readimage(unsigned char*img, int w, int h, char *fname)
{
FILE *fp;
fopen_s(&fp,fname, "rb");
if (fp == NULL){ cout << "error" << endl; return; }
size_t result;
result=fread(img , sizeof(unsigned char), w*h, fp);
if (result != w*h)
{
cout << "Reading error" << endl;
return;
}
else
cout << "Reading Ok!" << endl;
fclose(fp);
}
void mobanjuanji(unsigned char image, unsigned char*image1, int w, int h, float moban[5][5])
{
for (int i = 0; i for (int j = 0; j if (iw - 3 || j>h - 3)
image1[Twoto1(i,j,w)] = 0;
else
{
float temp = 0;
for (int m = 0; m<5; m++)
for (int n = 0; n<5; n++)
{
temp += (image[Twoto1(i-2+m,j-2+n,w)] moban[m][n]);
}
if (temp>255) image1[Twoto1(i, j, w)] = 255;
else if (temp<0) image1[Twoto1(i, j, w)] = 0;
else image1[Twoto1(i, j, w)] = temp;
}
}
void saveimage(unsigned char *img, int w, int h, char *fname)
{
FILE *fp;
fopen_s(&fp, fname, "wb");
if (fp == NULL) { cout << "error" << endl; return; }
size_t result;
result = fwrite(img, sizeof(unsigned char), w*h, fp);
if (result != w*h)
{
cout << "Write error" << endl;
return;
}
else
cout << "Write Ok!" << endl;
fclose(fp);
}
void main()
{
unsigned char *img;
unsigned char *img1;
float moban[5][5] = { {0,0,0,0,0},{0, -1, 0, 1, 0 }, { 0, -2, 0, 2, 0 }, { 0, -1, 0, 1, 0 }, { 0,0,0,0,0 } };
//float moban[5][5] = { 0 };
int w = 512, h = 512;
createimage(img, w, h);
createimage(img1, w, h);
readimage(img, w, h, "E:ss.raw");
mobanjuanji(img, img1,w, h, moban);
saveimage(img, w, h, "E:ss_1.raw");
saveimage(img1, w, h, "E:ss_2.raw");
delateimage(img);
delateimage(img1);
}
(1)c语言的使用图扩展阅读
C语言实现一个图片的读出和写入
#include <stdlib.h>
#include <windows.h>
int file_size(char* filename)//获取文件名为filename的文件大小。
{
FILE *fp = fopen(filename, "rb");//打开文件。
int size;
if(fp == NULL) // 打开文件失败
return -1;
fseek(fp, 0, SEEK_END);//定位文件指针到文件尾。
size=ftell(fp);//获取文件指针偏移量,即文件大小。
fclose(fp);//关闭文件。
return size;
}
int main ()
{
int size=0;
size=file_size("qw");
printf("%d ",size);
FILE * pFile,*qw;
char *buffer=(char*)malloc(sizeof(char)*size);
qw =fopen("qw","r");
pFile = fopen ( "qwe" , "wb" );
printf("%d==
",pFile);
printf("%d ",size);
fread(buffer,1,size,qw);
fwrite (buffer , sizeof(byte), size , pFile );
fclose (pFile);
rename("qwe","Groot.jpg");
return 0;
}
㈡ C语言问题:有函数调用的流程图怎么画
1、以特定的图形符号加上说明,表示算法的图,称为流程图或框图。
注意事项:
流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。
㈢ 谁知道C语言怎么画图啊
Turbo C提供了非常丰富的图形函数, 所有图形函数的原型均在graphics. h中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要确保有显示器图形驱动程序*BGI, 同时将集成开发环境Options/Linker中的Graphics lib选为on, 只有这样才能保证正确使用图形函数。由于种类比较多,所以下面仅列举2个例子,抛砖引玉→
1.点
void far putpixel(int x, int y, int color);
2.线
void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。
void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。
void far linerel(int dx, int dy); 画一条从现行游标(x, y)到按相对增量确定的点(x+dx, y+dy)的直线。
void far circle(int x, int y, int radius); 以(x, y)为圆心, radius为半径, 画一个圆。
c语言的图形部分是很有意思的,也是c中最精彩的内容之一,希望你能很快享受它的乐趣。
㈣ 怎样用c语言画图
你相当于只是画了10个方块啊。
你要想连续的话就增加点的数量。
int
num[10]={181,198,207,202,200,197,199,198,215,203};
就是这个。
㈤ 怎么使用C语言完成图片中要求的编程(尽量使用一维数组)
按照你的要求,都用一维数组。不过学生信息建议使用结构体来定义。
题目要求函数参数用到数组和指针,而数组传参本来就可用数组和指针两种方式。
下面是代码:
#include <stdio.h>
#define MJ 5//课程最大数量
#define MT 30//学生最大人数
#define FM 100//满分
#define PS 60//及格
int init(int ss[],int sid[],int *p_slen);//通过初始化数组。成功返回总分,失败返回0
int contFStudents(int ss[],int sid[],int slen);//统计不及格人数并打印名单,返回人数
int contAAvg(int ss[],int sid[],int slen,float avg);//avg表示平均分数,如未知传-1 返回人数
int contMax(int ss[],int slen,int *sid);//统计最高分及学号
int main()
{
int ss[MT],sid[MT],sum;
int slen=0;// 实际输入的学生人数
int fn,an;
sum=init(ss,sid,&slen);
fn=contFStudents(ss,sid,slen);
an=contAAvg(ss,sid,slen,(sum*1.0)/slen);
printf("不及格占比%.0f%% ",(fn*1.0)/slen*100);
printf("高于等于平均分占比%.0f%% ",(an*1.0)/slen*100);
contMax(ss,slen,sid);
return 0;
}
int init(int ss[],int sid[],int *p_slen)
{
int i=0,n,sum=0;
if(!p_slen) return 0;
*p_slen=0;
printf("该班级所有学生某课程成绩(人数不超过%d): ",MT);
for(i=0;i<MT;i++)sid[i]=1000+i;//学号没有特殊要求,直接用数字代替
i=0;
while(*p_slen<=MT)
{
printf("请输入学号%d的成绩:",sid[i]),scanf("%d",&n);
if(n>FM)
{
printf("%d输入无效,不能大于满分上限%d ",n,FM);
continue;
}
if(n<0) break;
ss[i++]=n;
sum+=n;
}
*p_slen=i;
return sum;
}
int contFStudents(int ss[],int sid[],int slen)
{
int i,cnt=0;
for(i=0;i<slen;i++)
if(ss[i]<PS)cnt++,printf("学号%d,分数:%d,不及格! ",sid[i],ss[i]);
printf("不及格人数共:%d人 ",cnt);
return cnt;
}
int contAAvg(int ss[],int sid[],int slen,float avg)
{
int i,cnt=0,sum=0;
if(avg==-1)
{
for(i=0;i<slen;i++) sum+=ss[i];
avg=(sum*1.0)/slen;
}
for(i=0,printf("平均分(%f)及平均分以上的学生有: ",avg);i<slen;i++)
if(ss[i]>=avg)cnt++,printf("学号%d,分数:%d ",sid[i],ss[i]);
printf("平均分及平均分以上人数共:%d人 ",cnt);
return cnt;
}
int contMax(int ss[],int slen,int *sid)
{
int i,max=ss[0];
if(!sid) return 0;
for(i=0;i<slen;i++)
if(ss[i]>max) max=ss[i];
for(i=0,printf("最高分(%d)的学生学号有: ",max);i<slen;i++)
if(ss[i]==max) printf("%d ",sid[i]);
return 1;
}
㈥ C语言怎么调用图片
图片也是一个文件,
1.你是要打开图片吗?(把图像显示出来?)
2.还是只需要图片文件。
如果是1,那么你需要看.bmp的编码方式和c库的图像类函数
如果是2,那么你就可以用fopen,fread,fwrite,fprintf,fscanf等调用即可。
㈦ c语言流程图怎么画
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
voidf();
voidf0();
voidf1(charp1[],charp2[]);
voidf2(charp1[],charp2[]);
voidf3(charp1[],charp2[]);
charch;
charp1[22],p2[22];
voidmain()
{
f();
}
voidf()
{
system("colore");
printf("请输入两个字符串p1p2:");
scanf("%s%s",p1,p2);
f0();
}
voidf0()
{
system("color2b");
inta;
printf("############################################################ ");
printf("#请输入:# ");
printf("#1.求字符串长度# ");
printf("#2.字符串复制# ");
printf("#3.字符串比较# ");
printf("############################################################ ");
printf("你选择的操作是:");
printf("%d",&a);
switch(a)
{
case1:
f1(p1,p2);break;
case2:
f2(p1,p2);break;
case3:
f3(p1,p2);break;
default:
printf("sorry输入有误!! ");break;
}
}
voidf1(charp1[],charp2[])
{
printf("p1长度为%d ",strlen(p1));
printf("p2长度为%d ",strlen(p2));
printf("############################################################ ");
printf("*按f键返回菜单* *按c键重新输入* *按其他键结束* ");
printf("############################################################ ");
getchar();
ch=getchar();
if(ch=='f')
{
system("cls");
f0();
}
elseif(ch=='c')
{
system("cls");
f();
}
else
exit(0);
}
voidf2(charp1[],charp2[])
{
strcpy(p1,p2);
printf("字符串复制后的结果为:%s ",p1);
printf("############################################################ ");
printf("*按f键返回菜单* *按c键重新输入* *按其他键结束* ");
printf("############################################################ ");
getchar();
ch=getchar();
if(ch=='f')
{
system("cls");
f0();
}
elseif(ch=='c')
{
system("cls");
f();
}
else
exit(0);
}
voidf3(charp1[],charp2[])
{
intm,n,i,j=0;
m=strlen(p1);
n=strlen(p2);
if(strcpy(p1,p2)!=0)
{
if(m<n)
for(i=0;j<m;i++)
{
if(p1[i]!=p2[i])
j=p1[i]-p2[i];
printf("第一个不相同的字符ASCII码差为:%d ",j);
break;
}
else
for(i=0;j<n;i++)
{
if(p1[i]!=p2[i])
j=p1[i]-p2[i];
printf("第一个不相同的字符的ASCII码差为:%d ",j);
break;
}
}
printf("############################################################ ");
printf("*按f键返回菜单* *按c键重新输入* *按其他键结束* ");
printf("############################################################ ");
getchar();
ch=getchar();
if(ch=='f')
{
system("cls");
f0();
}
elseif(ch=='c')
{
system("cls");
f();
}
else
exit(0);
}
㈧ c语言如何调用图片
直接调用并显示JPG BMP等格式图片的函数好像没有,要自己编写。
首先要弄清楚图片格式的编码方式,然后设置分辨率,可以显示出来。
void far getimage(int left,int top,int right,int bottom,void far *buf)
说明:把屏幕图形部分拷贝到由BUF所指向的内在区域,左上角和右下角图标。用函数IMAGESIZE()来确定存储图像所需字节数。用GETIMAGE()存储的图像可以用PUTIMAGTE()函数写到屏幕上。
㈨ 如何用C语言软件画图
matalab是我所知比较好的数学关系处理软件(当然简单一些的用excel就绰绰有余了),C语言软件中turbo-c显得就力不从心了,而且要进行比较复杂的编程语言转换,这个对于初学者太抽象了(命令式,可以类比于dos了··),如果你还是想借助c语言类软件的话,推荐用图形界面的软件,VB适于初学者,在之后可以选择学习VC(其中VC就已经足够强大了),另外要开发用于手机上的程式,就要学习java了··
(其他工具软件autoCAD也行,立体建模使用3d max 或者玛雅··)
以上仅供参考,希望对您有所帮助
㈩ 用C语言怎样调用图片要一个完整的,有重奖!
如果只是读数据,用file
open就行,如果想显示,最简的是shell外调系统程序打开图片,如果想自已读,自已绘制出来,bmp的还好,数据格式很简单,一个像素一个像素的读写就是了,如果是jpg,
tif等等,压缩算法你是写不出来的。代码很长,这儿不发表了。如果想支持各种格式的图像,你还是用现有的库吧,别指望自已能弄出来。