怎么用C语言中的fopen函数打开bmp格式的图像文件
3 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
1.图片也是属于文件类型的一种,图片属于二进制文件。使用fopen函数的二进制模式“rb”就可以打开。2.例程:
1234567891011121314151617181920212223242526272829303132333435 | #include <stdlib.h> #include <stdio.h> int main () { FILE * fpPhoto, * fpText, * fpTarget ; int iRead ; char szBuf[100] ; printf ( "请输入第一个文件名(jpg):\n" ) ; gets (szBuf) ; fpPhoto = fopen (szBuf, "rb" ) ; printf ( "请输入第二个文件名(txt):\n" ) ; gets (szBuf) ; fpText = fopen (szBuf, "rb" ) ; printf ( "请输入目的文件名(jpg):\n" ) ; gets (szBuf) ; fpTarget = fopen (szBuf, "wb" ) ; if (!fpPhoto || !fpText || !fpTarget) { printf ( "打开文件失败!\n" ) ; system ( "pause" ) ; return -1 ; } while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpPhoto)) > 0) fwrite (szBuf, 1, iRead, fpTarget) ; while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpText)) > 0) fwrite (szBuf, 1, iRead, fpTarget) ; fclose (fpPhoto) ; fclose (fpText) ; fclose (fpTarget) ; return 0 ; } |
芜湖不芜
TA贡献1796条经验 获得超7个赞
跳过BITMAPFILEHEADER..
读取BITMAPINFOHEADER
判断bitCount,确定是否有颜色表。
有颜色表就读取颜色表,没有的话位图数据就在BITMAPINFOHEADER后面。
位图数据的大小通过BITMAPINFOHEADER得出。
扬帆大鱼
TA贡献1799条经验 获得超9个赞
fopen看到的文件都是字节流。
你可以和打开任何文件一样打开bmp,但你独到的是字节流。
FILE *fp = NULL;
fp = fopen("xxx.bmp", "r");
if(fp == NULL)
return;
用十六进制的形式打开来,然后用比较工具比较
- 3 回答
- 0 关注
- 1971 浏览
添加回答
举报
0/150
提交
取消