V
主页
京东 11.11 红包
【C语言】第10讲(5) 实现最简单的24位彩色bmp文件读和显示
发布人
【C语言】第10讲(5) 实现最简单的24位彩色bmp文件读和显示 /* 目标是完成一段最简单的24位彩色bmp 文件读和显示的代码。 */ #include<stdio.h> #include<stdlib.h> #include<malloc.h> //第一部分为位图文件头,位图文件头长度固定,为14个字节。 typedef struct { unsigned char bfType[2];//指定文件类型,必须是0x424d,即”BM” unsigned long bfSize;//指定文件大小 unsigned short bfReserved1; unsigned short bfReserved2; unsigned long bfOffBits; } bitmapFileHeader; //第二部分为位图信息头,这个结构的长度也是固定的,为40个字节。 typedef struct { unsigned long biSize;//指这个struct的长度,为40 long biWidth;//指定图像的宽度,单位是像素 long biHeight;//指定图像的高度,单位是像素 unsigned short biPlanes; unsigned short biBitCount;// unsigned long biCompression; unsigned long biSizeImage;//指定实际的位图数据占用的字节数,其实也可以从以下的公式计算出来: long biXPixPerMeter; long biYPixPerMeter; unsigned long biClrused;// unsigned long biClrImportant;// } bitmapInfoHeader; int main() { FILE *fp,*fp_txt; if((fp=fopen("d:\\ctest\\mirng.bmp","rb"))==NULL) { perror("can not open file!"); return -1; } else { printf("good!\n"); } bitmapFileHeader bfHeader; fread(&bfHeader,14,1,fp); bitmapInfoHeader biHeader; fread(&biHeader,40,1,fp); int imSize=biHeader.biSizeImage; int width=biHeader.biWidth; int height=biHeader.biHeight; int bitCount=biHeader.biBitCount; fseek(fp,bfHeader.bfOffBits,SEEK_SET); unsigned char*imageData=(unsigned char*)malloc(imSize*sizeof(unsigned char)); fread(imageData,imSize*sizeof(unsigned char),1,fp); //图像为24位图像 int lineBytes=(bitCount*width+31)/32*4;//得到图像数据的bitwidth' int i,j; int r,g,b; for(i=0; i<height; i++) //对于每一行 { for(j=0; j<width*3; j++) //对于每一列 { r=*(imageData+lineBytes*(height-1-i)+j); //从最后一行往上读 j++; g=*(imageData+lineBytes*(height-1-i)+j); j++; b=*(imageData+lineBytes*(height-1-i)+j); if(r==255&&g==255&&b==255) //模拟二值图像展示 printf(" "); else printf(".$"); } printf("\n"); } free(imageData); fclose(fp); getchar(); return 0; }
打开封面
下载高清视频
观看高清视频
视频下载器
【C语言】第2讲(11) 怎样实现8进制和16进制与10进制整数之间相互转换显示
【C语言】第7讲( 12) 一步一步手撕 快速排序算法 最实用的排序方法 50行源代码搞定
【C语言】第6讲(22)最简桶排序 最快速的排序方法
【C语言】第10章(1)输入一个文件名然后在文件中写入内容以#结束文件输入
【C语言】第5章(10)以空格分割单词回车结束输入输出单词的个数
10:封装按键功能文件
极限速成考研数据结构代码(非标题党)
STM32是世界上最简单的东西
C#上位机开发从入门到精通(上)
【全548集】2024最细自学C语言C++入门全套教程,逼自己一个月学完,编程技术猛涨!存下吧,很难找全的C语言C++零基础入门知识了,只要这套就够了!!
对手写代码说拜拜~使用simulink和stm32硬件支持包自动生成代码开发stm32
3分钟搭建局域网文件分享系统
(纯C语言)神经网络手写数字识别
10分钟带你搞清CAS的实现与原理,Java并发编程再也难不倒你!
【C语言】第1讲 (3) C语言程序的基本结构及codeblocks显示中文乱码问题解决_字幕版
21天刷完1000题,每天1h!【空卡/考研政治】
2024ACM国庆培训
【C/C++技术】C语言实现网络爬虫技术!原理解析+代码实现,其实能更快实现爬虫技术的并不是Python!
改文件教程
【浙江大学】翁恺教你速通C语言!竟然可以把C语言讲的如此通俗易懂!草履虫都能学会,这么好的课程都没人看?我不更了
【附源码】2024C语言编程题零基础视频教程C语言入门初学者小白C语言考研必看!
【整整549集】这绝对是B站最细最适合自学的C语言零基础全套教程,2024最新版,全程干货无废话!七天就能从C语言小白变大神,存下吧,少走99%的弯路!
10月6号更新夸克网盘Svip368天体验券,下载不限速,扩容一步到底!兄弟们活动还在快來!
【彻底解决】Win11不能直接拖拽文件到任务栏软件上打开,无需安装第三方软件,2种方法简单操作
【C语言】第3讲(10) 银行贷款多少个月可以还清
【全628集】强推!2024最细自学C语言/C++全套教程!字节大佬终于把这套C语言教程整理成了动画片,从0基础小白到C语言编程大神只要这套就够了!!
【配套文件免费分享】适合Blender新手的入门产品动画
【C语言】基本题目讲解(10)程序设计题目(第1到第6题目)
2024【spring boot 3.0 开发指南】22章速通【红版】【书配套视频】 第7章 Spring Boot整合 Redis (上)
阿里二面:为什么使用多线程可以避免OOM?怎么利用多线程来导出百万数据到excel ??问倒一大片!
【C语言】第8讲(2)选举投票计票程序使用结构体数组来保存姓名和得票
3D打印模型文件分享 BC24-10-1 手办 宝可梦 FDM 等
【整300集】2024最新C语言零基础入门教程,两周速通,学完即可就业!
指针是怎样一步步发明出来的?
【C语言】第4章(8) 判断点是否在圆上使用小数点后3位精度进行判断.mp4
MySQL数据库中一行记录是怎么存储的?15分钟带你彻底搞明白,Java架构师必看!
【spring boot 3.0 开发指南】 第20章 人脸识别实战
【C语言】第9讲(11)元音字母 挑选一个字符串中的所有元音字母(aeiouAEIOU)构成并返回一个新的字符串。
大一C语言听不懂?给我两分钟,让你拉开95%计算机学生的差距!
【虚幻引擎】UE5如何使用WebSocket上传图片、文本、视频到服务器