C或VC++中有没有一些图像文件处理的函数?

就是读取图像文件、将一段数据保存为bmp或PNG之类的格式,这样的函数有没有?自己编写能力有限高手速答,谢谢!貌似graphics.h这玩意是DOS下的,VC的有么?感谢... 就是读取图像文件、将一段数据保存为bmp或PNG之类的格式,
这样的函数有没有?自己编写能力有限

高手速答,谢谢!
貌似graphics.h这玩意是DOS下的,VC的有么?

感谢两位,投票吧
展开
 我来答
pscsu
2009-04-23 · TA获得超过363个赞
知道小有建树答主
回答量:135
采纳率:100%
帮助的人:93万
展开全部
/*****************************************

* 函数名称:

* saveBmp()

*

*函数参数:

* char *bmpName-文件名字及路径

* unsigned char *imgBuf-待存盘的位图数据

* int width-以像素为单位待存盘位图的宽

* int height-以像素为单位待存盘位图高

* int biBitCount-每像素所占位数

* RGBQUAD *pColorTable-颜色表指针

*返回值:

* 0为失败,1为成功

*

*说明:给定一个图像位图数据、宽、高、颜色表指针及每像素所占的位数等信息,

* 将其写到指定文件中

***********************************************************************/

bool saveBmp(char *bmpName, unsigned char *imgBuf, int width, int height,

int biBitCount, RGBQUAD *pColorTable)

{

//如果位图数据指针为0,则没有数据传入,函数返回

if(!imgBuf)

return 0;

//颜色表大小,以字节为单位,灰度图像颜色表为1024字节,彩色图像颜色表大小为0

int colorTablesize=0;

if(biBitCount==8)

colorTablesize=1024;

//待存储图像数据每行字节数为4的倍数

int lineByte=(width * biBitCount/8+3)/4*4;

//以二进制写的方式打开文件

FILE *fp=fopen(bmpName,"wb");

if(fp==0) return 0;

//申请位图文件头结构变量,填写文件头信息

BITMAPFILEHEADER fileHead;

fileHead.bfType = 0x4D42;//bmp类型

//bfSize是图像文件4个组成部分之和

fileHead.bfSize= sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)

+ colorTablesize + lineByte*height;

fileHead.bfReserved1 = 0;

fileHead.bfReserved2 = 0;

//bfOffBits是图像文件前3个部分所需空间之和

fileHead.bfOffBits=54+colorTablesize;

//写文件头进文件

fwrite(&fileHead, sizeof(BITMAPFILEHEADER),1, fp);

//申请位图信息头结构变量,填写信息头信息

BITMAPINFOHEADER head;

head.biBitCount=biBitCount;

head.biClrImportant=0;

head.biClrUsed=0;

head.biCompression=0;

head.biHeight=height;

head.biPlanes=1;

head.biSize=40;

head.biSizeImage=lineByte*height;

head.biWidth=width;

head.biXPelsPerMeter=0;

head.biYPelsPerMeter=0;

//写位图信息头进内存

fwrite(&head, sizeof(BITMAPINFOHEADER),1, fp);

//如果灰度图像,有颜色表,写入文件

if(biBitCount==8)

fwrite(pColorTable, sizeof(RGBQUAD),256, fp);

//写位图数据进文件

fwrite(imgBuf, height*lineByte, 1, fp);

//关闭文件

fclose(fp);

return 1;

}

对于readBmp()和saveBmp()函数的简单调用如下:

void main()

{

//读入指定BMP文件进内存

char readPath[]="dog.BMP";

readBmp(readPath);

//输出图像的信息

printf("width=%d,height=%d, biBitCount=%d\n",bmpWidth,bmpHeight, biBitCount);

//将图像数据存盘

char writePath[]="dogcpy.BMP";

saveBmp(writePath, pBmpBuf, bmpWidth, bmpHeight, biBitCount, pColorTable);

//清除缓冲区,pBmpBuf和pColorTable是全局变量,在文件读入时申请的空间

delete []pBmpBuf;

if(biBitCount==8)

delete []pColorTable;

}
参考资料:http://book.csdn.net/bookfiles/780/10078023501.shtml
可以看到整本书的代码。
liming2354
2009-04-23 · TA获得超过318个赞
知道小有建树答主
回答量:368
采纳率:0%
帮助的人:0
展开全部
在graphics.h这个头文件里
一) 像素函数
56. putpiel() 画像素点函数
57. getpixel()返回像素色函数
(二) 直线和线型函数
58. line() 画线函数
59. lineto() 画线函数
60. linerel() 相对画线函数
61. setlinestyle() 设置线型函数
62. getlinesettings() 获取线型设置函数
63. setwritemode() 设置画线模式函数
(三)、多边形函数
64. rectangle() 画矩形函数
65. bar() 画条函数
66. bar3d() 画条块函数
67. drawpoly() 画多边形函数
(四)、 圆、弧和曲线函数
68. getaspectratio()获取纵横比函数
69. circle()画圆函数
70. arc() 画圆弧函数
71. ellipse()画椭圆弧函数
72. fillellipse() 画椭圆区函数
73. pieslice() 画扇区函数
74. sector() 画椭圆扇区函数
75. getarccoords()获取圆弧坐标函数
(五)、 填充函数
76. setfillstyle() 设置填充图样和颜色函数
77. setfillpattern() 设置用户图样函数
78. floodfill() 填充闭域函数
79. fillpoly() 填充多边形函数
80. getfillsettings() 获取填充设置函数
81. getfillpattern() 获取用户图样设置函数
(六)、图像函数
82. imagesize() 图像存储大小函数
83. getimage() 保存图像函数
84. putimage() 输出图像函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式