Windows下256色DIB位图的显示与保存

合集下载

DIB位图文件的格式、读取、保存和显示(转载)

DIB位图文件的格式、读取、保存和显示(转载)

DIB位图⽂件的格式、读取、保存和显⽰(转载)⼀、位图⽂件结构位图⽂件由三部分组成:⽂件头 + 位图信息 + 位图像素数据1、位图⽂件头:BitMapFileHeader。

位图⽂件头主要⽤于识别位图⽂件。

以下是位图⽂件头结构的定义:typedef struct tagBITMAPFILEHEADER { // bmfhWORD bfType; //bfType指定⽂件类型。

其值必须是0x4d42,即字符串“MB”,也就是说所有“.bmp”⽂件的头两个字节都是”MB“,标志该⽂件是位图⽂件。

DWORD bfSize; //bfSize的值是位图⽂件的⼤⼩,包括4个字节。

WORD bfReserved1;WORD bfReserved2; //bfReserved1,bfReserved2为保留字,不⽤考虑。

DWORD bfOffBits; //为从⽂件头到实际的位图数据的偏移字节数,} BITMAPFILEHEADER该结构的长度是固定的,为14个字节(WORD 为⽆符号16位整数,DWORD为⽆符号32位整数)。

2、位图信息:BitMapInfo。

位图信息中所记录的值⽤于分配内存,设置调⾊板信息,读取像素值等。

以下是位图信息结构的定义:1. typedef struct tagBITMAPINFO {2. BITMAPINFOHEADER bmiHeader; //位图信息头3. RGBQUAD bmiColors[1]; //颜⾊表4. } BITMAPINFO;可见位图信息也是由两部分组成的:位图信息头 + 颜⾊表/调⾊板(Palette)2.1 、位图信息头:BitMapInfoHeader。

位图信息头包含了单个像素所⽤字节数以及描述颜⾊的格式,此外还包括位图的宽度、⾼度、⽬标设备的位平⾯数、图像的压缩格式。

以下是位图信息头结构的定义:1. typedef struct tagBITMAPINFOHEADER{ // bmih2. DWORD biSize; //指定结构BITMAPINFOHEADER的字节数,为40个字节,即sizeof(BITMAPINFOHEADER)*3. LONG biWidth; //以像素为单位的图像宽度*4. LONG biHeight; // 以像素为单位的图像长度*5. WORD biPlanes; //⽬标设备的位平⾯数,必须是1,不⽤考虑。

Visual C++中DDB与DIB位图编程全攻略

Visual C++中DDB与DIB位图编程全攻略

Visual C++中DDB与DIB位图编程全攻略1. 基本概念先来用通俗的语句讲解位图和调色板的概念。

我们知道,自然界中的所有颜色都可以由红、绿、蓝(R,G,B)三基色组合而成。

针对含有红、绿、蓝色成分的多少,可以对其分别分成0~255个等级,而红、绿、蓝的不同组合共有256×256×256种,因此约能表示1600万种颜色。

对于人眼而言,这已经是"真彩色"了。

对每个像素进行了(R,G,B)量化的图像就是位图,其在计算机中对应文件的扩展名一般为.bmp。

既然用R,G,B的量化值就可以直接记录一张位图的所有像素,那我们需要调色板干什么呢?首先,我们可以计算完全利用(R,G,B)组合来存储一个800×600的位图所需要的空间为:800×600×3 = 1440000(字节)=1.37M(字节)惊人的大!因此,调色板横空出世了,它的功能在于缓解位图文件存储空间过大的问题。

假设一个位图为16色,其像素总数为800×600。

我们只需要用4个bit就可以存储这个位图的每个像素在16种颜色中所处的等级,然后调色板提供了这16种等级对应的(R,G,B)值,这样,存储这个16色位图只需要:800×600×4/8 = 240000(字节)= 0.22 M(字节)额外的存储R,G,B表的开销(即调色板Palette,也称为颜色查找表LUT)仅仅为16×3=48字节。

存储空间被大为减少!常见的位图有单色、16色、256色、16位及24位真彩色5种,对于前三者(即不大于256色)都可以调色板方式进行存储,而对16位及24位真彩色以调色板进行存储是不划算的,它们直接按照R,G,B分量进行存储。

在此基础上我们来分析DDB位图(Device-dependent bitmap,与设备相关的位图)与DIB位图(Device-independent bitmap,与设备无关的位图)的概念以及二者的区别。

位图和调色板

位图和调色板

第1章Windows位图和调色板1.1 位图和调色板的概念如今Windows(3.x以及95,98,NT)系列已经成为绝大多数用户使用的操作系统,它比DOS 成功的一个重要因素是它可视化的漂亮界面。

那么Windows是如何显示图象的呢?这就要谈到位图(bitmap)。

我们知道,普通的显示器屏幕是由许许多多点构成的,我们称之为象素。

显示时采用扫描的方法:电子枪每次从左到右扫描一行,为每个象素着色,然后从上到下这样扫描若干行,就扫过了一屏。

为了防止闪烁,每秒要重复上述过程几十次。

例如我们常说的屏幕分辨率为640×480,刷新频率为70Hz,意思是说每行要扫描640个象素,一共有480行,每秒重复扫描屏幕70次。

我们称这种显示器为位映象设备。

所谓位映象,就是指一个二维的象素矩阵,而位图就是采用位映象方法显示和存储的图象。

举个例子,图1.1是一幅普通的黑白位图,图1.2是被放大后的图,图中每个方格代表了一个象素。

我们可以看到:整个骷髅就是由这样一些黑点和白点组成的。

图1.1 骷髅图1.2 放大后的骷髅位图那么,彩色图是怎么回事呢?我们先来说说三元色RGB概念。

我们知道,自然界中的所有颜色都可以由红、绿、蓝(R,G,B)组合而成。

有的颜色含有红色成分多一些,如深红;有的含有红色成分少一些,如浅红。

针对含有红色成分的多少,可以分成0到255共256个等级,0级表示不含红色成分;255级表示含有100%的红色成分。

同样,绿色和蓝色也被分成256级。

这种分级概念称为量化。

这样,根据红、绿、蓝各种不同的组合我们就能表示出256×256×256,约1600万种颜色。

这么多颜色对于我们人眼来说已经足够丰富了。

表1.1 常见颜色的RGB组合值颜色R G B红255 0 0蓝0 255 0绿0 0 255黄255 255 0紫255 0 255青0 255 255白255 255 255黑0 0 0灰128 128 128你大概已经明白了,当一幅图中每个象素赋予不同的RGB值时,能呈现出五彩缤纷的颜色了,这样就形成了彩色图。

位图图形格式介绍

位图图形格式介绍

位图图形格式介绍位图图形格式介绍BMP:Windows 位图Windows 位图可以用任何颜色深度(从黑白到24 位颜色)存储单个光栅图像。

Windows 位图文件格式与其他Microsoft Windows 程序兼容。

它不支持文件压缩,也不适用于Web 页。

从总体上看,Windows 位图文件格式的缺点超过了它的优点。

为了保证照片图像的质量,请使用PNG 文件、JPEG 文件或TIFF 文件。

BMP 文件适用于Windows 中的墙纸。

优点:BMP 支持 1 位到24 位颜色深度。

BMP 格式与现有Windows 程序(尤其是较旧的程序)广泛兼容。

缺点:BMP 不支持压缩,这会造成文件非常大。

BMP 文件不受Web 浏览器支持。

PCX:PC 画图“PC 画图”图片(也被称为Z-Soft 位图)会以任何颜色深度存储单个光栅图像。

画笔图片更广泛地用于较早的Windows 程序和基于MS-DOS 的程序。

画笔图片与许多较新的程序兼容。

PCX 图片支持“行程长度编码”(RLE) 内部压缩。

优点:PCX 在许多基于Windows 的程序和基于MS-DOS 的程序间是标准格式。

PCX 支持内部压缩。

缺点:PCX 不受Web 浏览器支持。

PNG:可移植网络图形PNG 图片以任何颜色深度存储单个光栅图像。

PNG 是与平台无关的格式,同时PNG格式可以很好的支持无损压缩。

优点:PNG 支持高级别无损耗压缩。

PNG 支持alpha 通道透明度。

PNG 支持伽玛校正。

PNG 支持交错。

PNG 受最新的Web 浏览器支持。

缺点:较旧的浏览器和程序可能不支持PNG 文件。

作为Internet 文件格式,与JPEG 的有损耗压缩相比,PNG 提供的压缩量较少。

作为Internet 文件格式,PNG 对多图像文件或动画文件不提供任何支持。

GIF 格式支持多图像文件和动画文件。

JPEG:联合摄影专家组JPEG 图片以24 位颜色存储单个光栅图像。

位图显示

位图显示

VC++6.0中BMP位图的读取和显示Windows中位图有两种格式,一种是“设备相关”位图(Device Depend Bitmap,DDB),另一种是“设备无关”位图(Device Independ Bitmap,DIB)。

一、DDB位图的显示DDB位图的显示很简单,将文件内容拷贝到内存中,然后可以很方便地将它粘贴到相关设备中,用BitBlt函数直接显示。

首先改写视图类中的OnFileOpen()函数,从文件装载位图到内存中。

m_pBmp是CBitmap指针变量,得到该指针后,就可以在OnDraw()函数中显示位图了。

void CBmpDemoView::OnFileOpen(){// TODO: Add your command handler code herechar szFilter[] = "Bitmap(*.BMP)|*.BMP||";CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFilter);if(dlg.DoModal() == IDOK){CString filename = dlg.GetPathName();HBITMAP hBitmap = (HBITMAP)::LoadImage(NULL,szPathNa me,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);m_pBmp = new CBitmap();m_pBmp->Attach(hBitmap);}}void CBmpDemoView::OnDraw(CDC* pDC){CBmpDemoDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCDC dcMemory;CBitmap* pOldBmp;dcMemory.CreateCompatibleDC(pDC);pOldBmp = dcMemory.SelectObject(m_pBmp);pDC->BitBlt(m_orgpoint.x,m_orgpoint.y,m_size.cx,m_size.cy,&dcMemory,0,0,SRCCOPY);dcMemory.SelectObject(pOldBmp);}二、DIB位图的显示由于MFC没有提供现成的类封装DIB,这给用户操作DIB位图带来很大困难,但微软在2001年十月的MSDN中附带了dibapi.h和dibapi.cpp两个文件,我们可以利用现成的API函数来操作DIB位图,我们甚至可以按照自己的需要加入一些函数。

各种常用保存格式解析大全

各种常用保存格式解析大全

PDF (Portable Document Format的简称,意思「便携式文件格式」)是由Adobe Systems在1993年用於文件交换所发展出的文件格式。它的优点在於跨平台、能保留文件原有格式(Layout)、开放标准,能免版税(Royalty-free)自由开发PDF相容软体。
TGA (Targa)格式是计算机上应用最广泛的图象格式。在兼顾了BMP的图象质量的同时又兼顾了JPEG的体积优势。并且还有自身的特点:通道效果、方向性。在CG领域常作为影视动画的序列输出格式,因为兼具体积小和效果清晰的特点。
TIFF 标签图像文件格式(Tagged Image File Format,简写为TIFF) 是一种主要用来存储包括照片和艺术图在内的图像的文件格式。为图像文件格式,此图像格式复杂,存储内容多,占用存储空间大,其大小是GIF图像的3倍,是相应的JPEG图像的10倍,最早流行于Macintosh,现在Windows主流的图像应用程序都支持此格式。TIFF与JPEG和PNG一起成为流行的高位彩色图像格式。TIFF格式在业界得到了广泛的支持,如Adobe公司的Photoshop、Jasc的GIMP、Ulead PhotoImpact和Paint Shop Pro等图像处理应用、QuarkXPress和Adobe InDesign这样的桌面印刷和页面排版应用,扫描、传真、文字处理、光学字符识别和其它一些应用等都支持这种格式。
IFF 格式是一种通用的数据存储格式,可以关联和存储多种类型的数据。IFF是一种便携格式,它用于存储静止图片、声音、音乐、视频和文本数据等多种扩展名的文件。IFF格式包括Maya IFF和IFF(以前为 Amiga IFF)。
GIF 文件的数据,是一种基于LZW算法的连续色调的无损压缩格式。其压缩率一般在50%左右,GIF分为静态GIF和动画GIF两种,扩展名为.gif,是一种压缩位图格 文件可以存储成RGB或CMYK模式,还能够自定义颜色数并加以存储,还可以保存Photoshop的层、通道、路径等信息,是目前唯一能够支持全部图像色彩模式的格式。但体积庞大,在大多平面软件内部可以通用(如cdr ai ae等),另外在一些其它类型编辑软件内也可使用,例如office系列。但是PSD格式的图像文件很少为其它软件和工具所支持。所以在图像制作完成后,通常需要转化为一些比较通用的图像格式(如:jpg),以便于输出到其它软件中继续编辑。

BMP位图格式详解

BMP位图格式详解

位图格式BMP是bitmap的缩写形式,bitmap顾名思义,就是位图也即Windows位图。

它一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区组成。

在系统中以BMP为扩展名保存。

打开Windows的画图程序,在保存图像时,可以看到三个选项:2色位图(黑白)、16色位图、256色位图和24位位图。

现在讲解BMP的4个组成部分:1.文件头信息块0000-0001 :文件标识,为字母ASCII码“BM”。

0002-0005 :文件大小。

0006-0009 :保留,每字节以“00”填写。

000A-000D :记录图像数据区的起始位置。

各字节的信息含义依次为:文件头信息块大小,图像描述信息块的大小,图像颜色表的大小,保留(为01)。

2.图像描述信息块000E-0011:图像描述信息块的大小,常为28H。

0012-0015:图像宽度。

0016-0019:图像高度。

001A-001B:图像的plane总数(恒为1)。

001C-001D:记录像素的位数,很重要的数值,图像的颜色数由该值决定。

001E-0021:数据压缩方式(数值位0:不压缩;1:8位压缩;2:4位压缩)。

0022-0025:图像区数据的大小。

0026-0029:水平每米有多少像素,在设备无关位图(.DIB)中,每字节以00H填写。

002A-002D:垂直每米有多少像素,在设备无关位图(.DIB)中,每字节以00H填写。

002E-0031:此图像所用的颜色数,如值为0,表示所有颜色一样重要。

3.颜色表颜色表的大小根据所使用的颜色模式而定:2色图像为8字节;16色图像位64字节;256色图像为1024字节。

其中,每4字节表示一种颜色,并以B(蓝色)、G(绿色)、R(红色)、alpha(32位位图的透明度值,一般不需要)。

即首先4字节表示颜色号0的颜色,接下来表示颜色号1的颜色,依此类推。

4.图像数据区颜色表接下来位是位图文件的图像数据区,在此部分记录着每点像素对应的颜色号,其记录方式也随颜色模式而定,既2色图像每点占1位;16色图像每点占4位;256色图像每点占8位;真彩色图像每点占24位。

Windows程序设计TXT15.与设备无关的位图

Windows程序设计TXT15.与设备无关的位图

DIB 文件格式
有意思的是,DIB格式并不是源自于Windows。它首先定义在OS/2的1.1版中,该操作系统最初由IBM和Microsoft在八十年代中期开始开发。OS/2 1.1在1988年发布,并且是第一个包含了类似Windows的图形使用者接口的OS/2版本,该图形使用者接口被称之为「Presentation Manager(PM)」。「Presentation Manager」包含了定义位图格式的「图形程序接口」(GPI)。
信息表头
பைடு நூலகம்
RGB色彩对照表(不一定有)
位图图素位
除了没有文件表头外,其它部分与储存在文件内的DIB相同。
DIB文件(不是内存中的packed DIB)以定义为如下结构的14个字节的文件表头开始:
typedef struct tagBITMAPFILEHEADER // bmfh
与设备无关的位图
壹佰软件开发小组 整理编译
--------------------------------------------------------------------------------
在上一章我们了解到Windows GDI位图对象(也称为与设备相关的位图,或DDB)有许多程序设计用途。但是我并没有展示把这些位图储存到磁盘文件或把它们加载内存的方法。这是以前在Windows中使用的方法,现在根本不用了。因为位图的位格式相当依赖于设备,所以DDB不适用于图像交换。DDB内没有色彩对照表来指定位图的位与色彩之间的联系。DDB只有在Windows开机到关机的生命期内被建立和清除时才有意义。
typedef struct tagBITMAPCOREINFO // bmci
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Windows下256色DIB位图的显示与保存
杨宠;刘瑞祥
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】1997(000)006
【摘要】Windows中的位图有两种:依赖于设备的位图(DDB)和与设备无关的位图(DIB)。

前者与显示设备所使用的位模式之间有一种近似的相互关系,后者描述的却是图形的实际外形,而不是某特定的显示设备欲显示的图形的内部表示。

由于这种外部定义可以使用于任何显示设备,所以被称为与设备无关的位图。

与设备无关的位图通常以文件的形式保存在磁盘上,这就是我们常说的BMP文件。

BMP文件中保存的DIB可分为单色、16色、256色和真彩色四种,单色和16色的DIB色彩不够丰富,而真彩色的DIB位图文件又过于庞大。

【总页数】5页(P27-31)
【作者】杨宠;刘瑞祥
【作者单位】华中理工大学;华中理工大学
【正文语种】中文
【中图分类】TP311
【相关文献】
1.Windows下的位图在VxWorks中大字显示的实现 [J], 周祖洋;傅建纲;万杨
2.在Windows下实现多幅大尺寸位图的显示与浏览 [J], 王伯尊;张凤茹
3.WindoWs下多幅大尺寸位图的显示与浏览 [J], 王珏;葛冬梅
4.Windows下多幅大尺寸位图的显示与浏览 [J], 李为民;黄瑜
5.建立草地管理系统中Windows下多幅大尺寸位图的显示与浏览 [J], 才永男因版权原因,仅展示原文概要,查看原文内容请购买。

相关文档
最新文档