C语言实现BMP格式图片的读写

本文介绍了作者通过一天的学习实践,掌握了BMP文件格式,并编写了C语言程序来读取和写入BMP图片。程序详细解释了BMP文件头和信息头的结构,以及不同颜色深度的处理方式。此外,该程序还能提取每个像素的RGB分量并保存到单独的文件中。
摘要由CSDN通过智能技术生成

      经过一天的实践,终于弄明白的BMP图片的格式,并完成了正确读取图片信息,并生成新的BMP图片。

      写程序前,首先要先了解一下几个知识点:

      1. BMP图片的文件头、信息头,一共是54个字节,具体结构和意义在程序中有详细注释;

      2. BMP按照每个像素的颜色占用的bit数分:1位(2色)、4位(16色)、8位(256色)、24位(真彩色)、32位(带透明度信息),一共五种,其中除24位和32位外,都需要使用调色板;

      3. BMP中的图像数据按照每行32位对齐,不足32位用0补齐,故每行实际的长度是(像素宽度*像素占用bit数+31)/32个bit位;


      附上详细程序,实现了读取一副bmp图片信息,重新生成一副bmp图像的功能,同时分别取出了每个像素的RGB三个分量值,分别存入三个文件。

#include<stdio.h>
#include<stdlib.h>
typedef unsigned short int WORD;  
typedef unsigned int DWORD;  
typedef unsigned char BYTE; 

typedef struct tagBITMAPFILEHEADER
{
	WORD	bfType;			// 位图文件类型,必须为‘BM’(0-1字节)
	DWORD	bfSize;			// 位图文件大小,以字节为单位(2-5字节)
	WORD	bfReserved1;	// 位图文件保留字,必须为0(6-7字节)
	WORD	bfReserved2;	// 位图文件保留字,必须为0(8-9字节)
	DWORD	bfOffBits;		// 位图数据的起始位置&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值