怎么用C语言中的fopen函数打开bmp格式的图像文件?

怎么用C语言中的fopen函数打开bmp格式的图像文件


RISEBY
浏览 1972回答 3
3回答

POPMUISE

1.图片也是属于文件类型的一种,图片属于二进制文件。使用fopen函数的二进制模式“rb”就可以打开。2.例程:1234567891011121314151617181920212223242526272829303132333435&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;<stdlib.h>&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;<stdio.h>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;main&nbsp;()&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;*&nbsp;fpPhoto,&nbsp;*&nbsp;fpText,&nbsp;*&nbsp;fpTarget&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iRead&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;szBuf[100]&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;("请输入第一个文件名(jpg):\n")&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gets&nbsp;(szBuf)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpPhoto&nbsp;=&nbsp;fopen&nbsp;(szBuf,&nbsp;"rb")&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;("请输入第二个文件名(txt):\n")&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gets&nbsp;(szBuf)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpText&nbsp;=&nbsp;fopen&nbsp;(szBuf,&nbsp;"rb")&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;("请输入目的文件名(jpg):\n")&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gets&nbsp;(szBuf)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fpTarget&nbsp;=&nbsp;fopen&nbsp;(szBuf,&nbsp;"wb")&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!fpPhoto&nbsp;||&nbsp;!fpText&nbsp;||&nbsp;!fpTarget)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;("打开文件失败!\n")&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system("pause")&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((iRead&nbsp;=&nbsp;fread&nbsp;(szBuf,&nbsp;1,&nbsp;sizeof&nbsp;(szBuf),&nbsp;fpPhoto))&nbsp;>&nbsp;0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite&nbsp;(szBuf,&nbsp;1,&nbsp;iRead,&nbsp;fpTarget)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((iRead&nbsp;=&nbsp;fread&nbsp;(szBuf,&nbsp;1,&nbsp;sizeof&nbsp;(szBuf),&nbsp;fpText))&nbsp;>&nbsp;0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite&nbsp;(szBuf,&nbsp;1,&nbsp;iRead,&nbsp;fpTarget)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose&nbsp;(fpPhoto)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose&nbsp;(fpText)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose&nbsp;(fpTarget)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;}

芜湖不芜

跳过BITMAPFILEHEADER..读取BITMAPINFOHEADER判断bitCount,确定是否有颜色表。有颜色表就读取颜色表,没有的话位图数据就在BITMAPINFOHEADER后面。位图数据的大小通过BITMAPINFOHEADER得出。

扬帆大鱼

fopen看到的文件都是字节流。你可以和打开任何文件一样打开bmp,但你独到的是字节流。FILE *fp = NULL;fp = fopen("xxx.bmp", "r");if(fp == NULL)return;用十六进制的形式打开来,然后用比较工具比较
打开App,查看更多内容
随时随地看视频慕课网APP