说到图片,位图(Bitmap)当然是最简单的,它Windows显示图片的基本格式,其文件扩展名为*.BMP。在Windows下,任何各式的图片文件(包括视频播放)都要转化为位图个时候才能显示出来,各种格式的图片文件也都是在位图格式的基础上采用不同的压缩算法生成的(Flash中使用了适量图,是按相同颜色区域存储的)。
一、下面我们来看看位图文件(*.BMP)的格式。
位图文件主要分为如下3个部分:
块名称
对应Windows结构体定义
大小(Byte)
文件信息头
BITMAPFILEHEADER
14
位图信息头
BITMAPINFOHEADER
40
RGB颜色阵列
BYTE*
由图像长宽尺寸决定
1、 文件信息头BITMAPFILEHEADER
结构体定义如下:
typedef struct tagBITMAPFILEHEADER { /* bmfh */
UINT bfType;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
其中:
bfType
说明文件的类型,该值必需是0x4D42,也就是字符'BM'。
bfSize
说明该位图文件的大小,用字节为单位
bfReserved1
保留,必须设置为0
bfReserved2
保留,必须设置为0
bfOffBits
说明从文件头开始到实际的图象数据之间的字节的偏移量。这个参数是非常有用的,因为位图信息头和调色板的长度会根据不同情况而变化,所以你可以用这个偏移值迅速的从文件中读取到位数据。
2、位图信息头BITMAPINFOHEADER
结构体定义如下:
typedef struct tagBITMAPINFOHEADER { /* bmih */
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
其中:
biSize
说明BITMAPINFOHEADER结构所需要的字数。
biWidth
说明图象的宽度,以象素为单位。
biHeight
说明图象的高度,以象素为单位。注:这个值除了用于描述图像的高度之外,它还有另一个用处,就是指明该图像是倒向的位图,还是正向的位图。如果该值是一个正数,说明图像是倒向的,如果该值是一个负数,则说明图像是正向的。大多数的BMP文件都是倒向的位图,也就是时,高度值是一个正数。
biPlanes
为目标设备说明位面数,其值将总是被设为1。
biBitCount
说明比特数/象素,其值为1、4、8、16、24、或32。但是由于我们平时用到的图像绝大部分是24位和32位的,所以我们讨论这两类图像。
biCompression
说明图象数据压缩的类型,同样我们只讨论没有压缩的类型:BI_RGB。
biSizeImage
说明图象的大小,以字节为单位。当用BI_RGB格式时,可设置为0。
biXPelsPerMeter
说明水平分辨率,用象素/米表示。
biYPelsPerMeter
说明垂直分辨率,用象素/米表示。
biClrUsed
说明位图实际使用的彩色表中的颜色索引数(设为0的话,则说明使用所有调色板项)。
biClrImportant
说明对图象显示有重要影响的颜色索引的数目,如果是0,表示都重要。
3、RGB颜色阵列
有关RGB三色空间我想大家都很熟悉,这里我想说的是在Windows下,RGB颜色阵列存储的格式其实BGR。也就是说,对于24位的RGB位图像素数据格式是:
蓝色B值
绿色G值
红色R值
对于32位的RGB位图像素数据格式是:
蓝色B值
绿色G值
红色R值
透明通道A值
透明通道也称Alpha通道,该值是该像素点的透明属性,取值在0(全透明)到255(不透明)之间。对于24位的图像来说,因为没有Alpha通道,故整个图像都不透明。
分享到:
相关推荐
总结一下,C语言实现位图BMP的合成和缩放涉及到理解BMP文件格式、透明度合成、像素插值和边界处理等多个技术点。实际操作时,需要编写读取、合成和缩放的函数,并结合示例代码和测试数据进行调试和完善。通过这个...
位图BMP(Bitmap)格式是Windows操作系统中最基础的图像文件格式之一,它以未经压缩的原始像素数据存储图像。在VC++环境下,处理BMP文件通常涉及到文件的读写操作,以及对图像数据的解析和操作。这个“位图BMP格式...
BMP文件的开头是文件头,它包含了两个重要的结构:BITMAPFILEHEADER(位图文件头)和BITMAPINFOHEADER(位图信息头)。BITMAPFILEHEADER是一个14字节的数据结构,主要包含以下信息: 1. 文件类型标识('B'和'M',...
在C#编程中,BMP(Bitmap)是一种常见的图像文件格式,用于存储位图图像。在某些场景下,我们可能需要生成单色的BMP图片,例如创建二值化图像或者简单的图标。本教程将详细介绍如何使用C#来生成单色的BMP图像。 ...
在C#编程中,生成单色位图是一种常见的图像处理技术,主要应用于简化图像、创建二值化图像或实现特定的视觉效果。本教程将详细解释如何使用C#来生成单色位图,并且添加信息头,使得图像更加规范且易于处理。 首先,...
BMP文件,全称为Bitmap,是Windows操作系统中常见的一种位图图像格式。它以未经压缩的原始数据存储像素信息,因此文件通常较大。本教程将深入探讨BMP文件的处理,包括解析和显示的过程,这对于嵌入式开发人员来说是...
触摸屏技术在现代电子设备中扮演着至关重要的角色,尤其是位图按钮的应用,极大地提升了人机交互体验。位图按钮,简单来说,是通过位图图像来表示可点击的交互元素,常见于触摸屏设备的用户界面设计中。位图是一种...
在电子工程和嵌入式系统领域,BMP(Bitmap)图像是一种常见的图形文件格式,它包含了大量的像素数据,用于在屏幕上显示图像。然而,当我们要在单片机或嵌入式系统上显示图像时,由于资源限制,通常需要将这些复杂的...
实现bmp图像的读入,加深对bmp图像的文件结构的了解,采用UltraEdit软件可以辅助分析文件头、信息头、颜色板、数据四部分字节,程序实现图像的重写,即生成一幅反色的图像,将原图的像素值取255的补。
BMP位图,全称为Bitmap,是Windows操作系统中最常见的图像文件格式之一。它以位映射存储格式保存图像数据,不包含任何压缩,因此文件体积通常较大。本压缩包中的源代码提供了对BMP位图进行处理的功能,适用于C语言...
1. **文件头解析**:首先,程序需要读取.bmp文件的头信息,包括位图文件头(BITMAPFILEHEADER)和位图信息头(BITMAPINFOHEADER)。这些结构体包含了图像的宽度、高度、颜色深度等关键信息。 2. **数据读取**:接着...
BMP文件是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,所以称为位图(bitmap)文件,因其文件扩展名为BMP,故称为BMP文件格式,简称BMP文件 ...
位图转数据(bmp图片转dat数据)源码; //bmp图片(位图)转换为dat数据,并存入到指定文件中; //若需将.dat数据在转换回位图.bmp文件,可以下载参考我的另外一个文档"data_bmp.c" //运行参考:./main infile.bmp outfile...
BMP位图文件是一种常见的图像文件格式,广泛应用于各种操作系统和应用程序中。它的全称是Bitmap,源自Microsoft Windows操作系统,但已经成为了跨平台的标准。在本文中,我们将深入探讨BMP位图文件的结构、如何读取...
是一个mfc单文档对位图进行操作的简单小程序,包含顺时针旋转90度,灰度化,分块,图像的保存和显示。因为作业要求比较简单,交的时候又把一些操作改简单了,可以在一些函数内对变量进行一些简单操作增加功能。...
在IT领域,BMP(Bitmap)位图是一种常见的图像文件格式,它以未压缩的方式存储像素数据,使得图像可以精确地还原。本压缩包提供的资源包括C语言实现的BMP位图读写封装源码(BMPTool.cpp、BMPTool.h)以及BMP位图文件...
BMP位图图像格式简介 BMP位图图像格式是一种常用的图像文件格式,它由四个部分组成:位图文件头、位图信息头、彩色表和图象数据阵列。下面是对BMP位图图像格式的详细介绍: 位图文件头(Bitmap File Header) ...
1:BMP由四部分组成:BMP文件头(14字节)、位图信息头(40字节)、颜色表、位图数据。 2:BMP文件头(14字节) BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 其结构定义如下: typedef ...
在MFC(Microsoft Foundation Classes)框架下,使用VC++显示BMP位图是一个常见的任务,尤其是在开发图形用户界面(GUI)应用时。本教程将详细解释如何在VC++中加载和显示BMP图像文件。 首先,我们需要理解BMP位图...
在计算机图形处理中,BMP(Bitmap)是一种常见的位图图像格式,由Microsoft开发并广泛应用于Windows操作系统。本文将深入探讨如何直接通过读取文件的方式来显示BMP位图,这通常涉及到位图文件的结构理解、内存管理和...