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

关于图片存储格式的整理(BMP格式介绍)

关于图片存储格式的整理(BMP格式介绍)

关于图⽚存储格式的整理(BMP格式介绍)BMPBMP(全称Bitmap)是Window操作系统中的标准图像⽂件格式可以分成两类:设备相关位图(DDB)和设备⽆关位图(DIB),使⽤⾮常⼴。

它采⽤位映射存储格式,除了图像深度可选以外,不采⽤其他任何压缩,因此,BMP⽂件所占⽤的空间很⼤。

BMP⽂件的图像深度可选lbit、4bit、8bit及24bit。

BMP⽂件存储数据时,图像的扫描⽅式是按从左到右、从下到上的顺序。

由于BMP⽂件格式是Windows环境中交换与图有关的数据的⼀种标准,因此在Windows环境中运⾏的图形图像软件都⽀持BMP图像格式。

组成 典型的BMP图像⽂件由四部分组成: 1:位图头⽂件数据结构,它包含BMP图像⽂件的类型、显⽰内容等信息; 2:位图信息数据结构,它包含有BMP图像的宽、⾼、压缩⽅法,以及定义颜⾊等信息; 3:调⾊板,这个部分是可选的,有些位图需要调⾊板,有些位图,⽐如真彩⾊图(24位的BMP)就不需要调⾊板; 4:位图数据,这部分的内容根据BMP位图使⽤的位数不同⽽不同,在24位图中直接使⽤RGB,⽽其他的⼩于24位的使⽤调⾊板中颜⾊索引值。

对应的数据结构 1:BMP⽂件组成 BMP⽂件由⽂件头、位图信息头、颜⾊信息和图形数据四部分组成。

2:BMP⽂件头(14字节) BMP⽂件头数据结构含有BMP⽂件的类型、⽂件⼤⼩和位图起始位置等信息。

其结构定义如下: typedef struct tagBITMAPFILEHEADER { WORD bfType; // 位图⽂件的类型,必须为BM(1-2字节) DWORD bfSize; // 位图⽂件的⼤⼩,以字节为单位(3-6字节) WORD bfReserved1; // 位图⽂件保留字,必须为0(7-8字节) WORD bfReserved2; // 位图⽂件保留字,必须为0(9-10字节) DWORD bfOffBits; // 位图数据的起始位置,以相对于位图(11-14字节) // ⽂件头的偏移量表⽰,以字节为单位 } BITMAPFILEHEADER; 3:位图信息头(40字节) BMP位图信息头数据⽤于说明位图的尺⼨等信息。

数字图像处理-位图基础知识

数字图像处理-位图基础知识

第一章位图的基础知识现代计算机和其他电子设备进行和完成的一系列工作为图像采集、获取、编码、存储、和传输,图像的合成和产生、图像的显示、绘制、和输出,图像变换、增强、恢复和重建,特征的提取和测量,目标的检测、表达和描述,序列图像的校正,图像数据库的建立、索引、查询和抽取,图像的分类、表示和识别,3D景物的重建复原,图像模型的建立,图像知识的利用和匹配,图像场景的解释和理解,以及基于它们的推理、判断、决策和行为规划。

图像增强图像增强是用以改善供人观看的图像的主观质量,而不一定追究图像降质的原因。

图像复原找出图像降质的原因,并尽可能消除它,使图像恢复本来面目。

常用的恢复有纠正几何失真、从已知图像信号和噪声信号的统计入手,用Wiener滤波等方法来改善信噪比。

图像变换图像处理的方法可以分为两大类空域法和频域法。

常用的图像变换有傅里叶变换、DCT变换、小波变换等。

图像编码根据香农的率失真真理,在传输和存储时,都可对数字图像进行一定方式编码,删除其中冗余信息,实现不失真压缩,或在容许失真限度内的进行有失真压缩,以换取更大的压缩率。

图像配准可以近似的看成匹配的过程,简单地说就是根据图像的某系区域或者特征,在另一幅图中找到对应的区域或者特征。

图像配准在图像识别、图像拼接、三维图像的重建等方面有着重要的应用。

图像分析和特征提取图像分析的内容分为特征提取、符号描述、目标检测、今晚匹配和识别等几个部分。

图像特征和指图像场中可用作标志的属性,其中有些是视觉直接感受到自然特征,如区域的亮度、彩色、纹理、或轮廓等有些事需要通过变换或测量才可得到的人为特征,如各种变换频谱、直方图、矩等。

图像特征提取就是从图像中提取出某些可能涉及到高层语义信息的图像特征。

目标和运动检测自动目标检测和交互目标检测。

图像分割人能方便地佛纳甘一副图像中找出感性趣的物体和区域,而要让计算机做到这一点需要他客观的测度,使之能按照灰度、颜色或几何特征性质等把一些物体或区域加以分离。

BMP图像存储格式

BMP图像存储格式

维基百科的BMP定义BMP取自位图BitMaP的缩写,也称为DIB(与设备无关的位图),是微软视窗图形子系统(Graphics Device Interface)内部使用的一种位图图形格式,它是微软视窗平台上的一个简单的图形文件格式。

图像通常保存的颜色深度有2(1位)、16(4位)、256(8位)、65536(16位)和1670万(24位)种颜色(其中位是表示每点所用的数据位)。

8位图像可以是索引彩色图像外,也可以是灰阶图像。

表示透明的alpha通道也可以保存在一个类似于灰阶图像的独立文件中。

带有集成的alpha通道的32位版本已经随着Windows XP出现,它在视窗的登录和主题系统中都有使用。

文件大小计算BMP文件通常是不压缩的,所需存储空间比较大。

一个像素所占的字节数为n∕8字节,n是位深。

文件大小可以根据以下公式近似计算:BMP文件大小≈54+4*2n+(width*height*n)∕8;54是位图文件的文件头,4*2n是调色板的大小(对于没有调色板的位图文件,则不存在这一项),最后一项是像素数据。

由于存储算法决定的因素,实际文件大小和计算值可能有细微差别;因此使用的≈符号而不是等于号。

文件存储格式BMP图像自推出以后,几经演进,存储格式也有所变化。

下表详细描述了位图文件可能包含的数据。

结构体名称可选大小用途备注位图文件头否14字节存储位图文件通用信息仅在读取文件时有用DIB头否固定(存在7种不同版本)存储位图详细信息及像素格式紧接在位图文件头后附加位掩码是3或4 DWORD(12或16字节)定义像素格式仅在DIB头是BITMAPINFOHEADER时存在调色板见备注可变定义图像数据(像素数组)所用颜色色深≤ 8时不能省略填充区A是可变结构体对齐位图文件头中像素数组偏移量的产物像素数组否可变定义实际的像素数值像素数据在DIB头和附加位掩码中定义。

像素数组中每行均以4字节对齐填充区B 是可变结构体对齐DIB头中ICC色彩特性数据偏移量的产物ICC色彩特性数据是可变定义色彩特性可以包含外部文件路径,由该文件来定义色彩特性Remark:像素数组每行均以4字节对齐,这会影响我们怎么读取像素数据。

超简单的ps制作256色非压缩位图 附 解决easyboot保存时的背景图像读取错误

超简单的ps制作256色非压缩位图 附 解决easyboot保存时的背景图像读取错误

超简单的ps制作256色非压缩位图这是在用EasyBoot制作启动光盘时遇到的问题,背景图片需要特殊的BMP格式4位、8位、或者16位,且不能位压缩位图,不过这些要求都能用PS做出来,网上居然有人说ps办不到,崩溃了~~下面简单介绍一下如何使用PS生成EasyBoot需要的格式(比如256色非压缩位图),我使用的是Photoshop CS3。

首先自己做一张图片或者直接打开一张图片,操作如下:图像-模式-索引颜色,设置为256色(8位),另存为BMP格式的时候取消压缩的选项。

OK!这种方法设置后的图片画质相对较好,即256色非压缩位图。

EasyBoot也支持16位(64K色)的BMP图像,打开图片后直接另存为BMP格式,然后设置为16位,画质比上面的差。

下面是几种格式的图像画质对比,当然jpg格式是最完美的,可惜不能用于制作启动盘的背景图像。

其次是256色(8位)非压缩位图,最差的是16位图像。

至于16位图像为什么画质这么差我也说不清,还得请教各位高手,可能是PS处理的方式导致的。

jpg格式:256色非压缩位图:16位BMP位图:【附】解决easyboot保存时的背景图像读取错误最近用easyboot做启动光盘,每次一按保存键都说“背景图像读取错误”。

可是我已经设置背景图片为256色位图了,实在不知如何是好!后来终于找到了解决方法,虽然不知道什么原理,但是很管用!贴出来和大家分享!常规的方法:用photoshop图像-模式-索引(注意:调板要改为系统即windows),另存为bmp。

但是这种方法着色会失真。

而且有时会出现上面说的错误提示。

所以最好的方法是,用photoshop图像-模式-索引,先另存为gif格式,然后用系统自带的画图工具另存为256色位图,这种方法一点也不会失真的,呵,够详细了吧说的^_^补充:这个方法虽然有效,但是仍然不是我希望的那样!这样弄完图片的体积仍然很大,logo和菜单背景大约每个200多K,继续研究中!。

在VC5中显示256色位图

在VC5中显示256色位图

在VC5中显示256色位图在Windows的编程中,彩色图像的显示和处理一直是一个重要的课题,即使是在显卡普遍支持真彩的今天,讨论256色位图的显示也是有意义的。

通过对这一课题的讨论,可以了解如何在VC5中实现装入图像,创建和使用调色板,以及最后将图像画出来。

总的来说,要显示一幅256色的位图,首先应得到该图的有关信息,通过位图的颜色表创建一个逻辑调色板,然后将这个调色板选入设备环境,实现这个调色板,最后将位图用BitBlt函数拷贝到设备环境就可以了。

具体实现步骤如下:1、装载位图并创建调色板。

首先装入一幅位图,该位图既可以以资源的形式与程序绑在一起,也可以以文件的形式从外部装入。

然后将该位图与一个Cbitmap对象联系(Attach)起来。

在这儿我们应使用API函数LoadImage(),而不是CBitmap类的成员函数CBitmap::LoadBitmap(),因为我们需要得到该位图的DIBSECTION结构,从这个结构中我们可以得到该位图的色彩信息,从而建立一个与这些色彩相匹配的逻辑调色板。

使用CBitmap::LoadBitmap()将会失去我们所需的位图的色彩信息。

得到位图后,下一步工作就是取得该位图的色彩信息。

通过CBitmap:GetObject()函数,我们可以访问DIBSECTION结构,从中得到位图的色彩数。

一般来说,这些信息存在于BITMAPINFOHEAD结构中,不过,作为DIBSECTION结构的一部分,BITMAPINFOHEAD有时并未说明图像用了多少种颜色;碰到这种情况,我们可以看看图像的每一象素用了几位(Bit)来描述颜色,如果是8位的话,因为8位二进制数可以表示256种不同的值,所以该图像是256色的;同理,16Bit表明是64K色。

得到了位图所用的颜色数,就可以创建逻辑调色板了。

色彩超过256色的位图是没有颜色表(Color Table)的,这时我们只用简单地创建一个和设备环境兼容的半色调调色板(Halftone Palette)就行了,在半色调调色板中包含着所有不同颜色的样本。

位图的基本格式

位图的基本格式

第一章位图的基本格式1.1位图文件格式的产生及发展BMP图像文件格式是微软公司为其Windows环境设置的标准图像格式,而且Windows系统软件中还同时内含了一系列支持BMP图像处理的API函数,随着Windows 在世界范围内的不断普及,BMP文件格式无疑也已经成为PC机上的流行图像文件格式。

它的主要特点可以概括为:文件结构与PCX文件格式类似,每个文件只能存放一幅图像;图像数据是否采用压缩方式存放,取决于文件的大小与格式,即压缩处理成为图像文件的一个选项,用户可以根据需要进行选择。

其中,非压缩格式是BMP图像文件所采用的一种通用格式。

但是,如果用户确定将BMP文件格式压缩处理,则Windows设计了两种压缩方式:如果图像为16色模式,则采用RLE4压缩方式,若图像为256色模式,则采用RLE8压缩方式。

同时,BMP图像文件格式可以存储单色、16色、256色以及真彩色四种图像数据,其数据的排列顺序与一般文件不同,它以图像的左下角为起点存储图像,而不是以图像的左上角为起点;而且BMP图像文件格式中还存在另外一个与众不同的特点,即其调色板数据所采用的数据结构中,红、绿、蓝三种基色数据的排列顺序也恰好与其它图像文件格式相反。

总之,BMP图像文件格式拥有许多适合于Windows环境的新特色,而且随着Windows版本的不断更新,微软公司也在不断改进其BMP图像文件格式,例如:当前BMP图像文件版本中允许采用32位颜色表,而且针对32位Windows 的产生,相应的API函数也在不断地推陈出新,这些无疑都同时促成了BMP文件格式的不断风靡。

但由于BMP 文件格式只适合于Windows上的应用软件,而对于DOS环境中的各种应用软件则无法提供相应的支持手段,因此这无疑是阻碍BMP文件格式的流通程度超过PCX文件格式的一个重要因素。

1.2 位图文件的类型Windows中定义了两种位图文件类型,即一般位图文件格式与设备无关位图文件格式。

常见的图档格式

常见的图档格式

常见的图档格式BMPBMP档是最普遍的点阵图格式之一,也是WINDOWS系统下的标准格式,我们利用WINDOWS的调色盘绘图,就是存成BMP档PCXPCX档是MS-DOS下常用的格式,在WINDOWS应用软体尚未普及时,MS-DOS下的绘图,排版软体多用PCX格式,从最早的16色,发展至今已可达1677万色GIFGIF是Graphics Interchange Format 的简写,是Compuserve公司所制订的格式,因为Compuserve公司开放使用权限,所以广受应用,且适用於各式主机平台,各软体皆有支援,现今的GIF格式仍只能达到256色,但它的GIF89a格式,能储存成背景透明化的形式,并且可以将数张图存成一个档案,形成动画效果.JPEGJPEG是一种高效率的压缩档,在存档时能够将人眼无法分辨的资料删除,以节省储存空间,但这些被删除的资料无法在解压时还原,所以JPEG档案并不适合放大观看,输出成印刷品时品质也会受到影响,这种类型的压缩档案,称为『失真(Loosy)压缩』或『破坏性压缩』PSDPSD档是 Adobe Photoshop 的专用档案,可以储存成RGB或CMYK模式,更能自订颜色数目储存,PSD档可以将不同的物件以层级(Layer)分离储存,便於修改和制作各种特效*.tif/*.tiff(Tag Image File Format)*.tiff是由Aldus为Macintosh机开发的一种图形文件格式,最早流行于Macintosh,现在Windows上主流的图像应用程序都支持该格式。

目前,它是M acintosh和PC机上使用最广泛的位图格式,在这两种硬件平台上移植*.tiff图形图像十分便捷,大多数扫描仪也都可以输出*.tiff格式的图像文件。

该格式支持的色彩数最高可达1 6M种。

其特点是:存储的图像质量高,但占用的存储空间也非常大,其大小是相应*.gif图像的3倍,*.jpeg图像的10倍;细微层次的信息较多,有利于原稿阶调与色彩的复制。

计算机的颜色储存格式(索引色真彩色)

计算机的颜色储存格式(索引色真彩色)

计算机的颜⾊储存格式(索引⾊真彩⾊)常见的颜⾊有 8位16位 24位32位⾊,其中24位及以上称为真彩,是PC上最常⽤的颜⾊,其他基本⽤于嵌⼊式系统或⼀些⼯控领域,详情可查阅⼀下表格:Bit-深度⾊彩数1 2 (monochrome)2 4 (CGA)4 16 (EGA)8 256 (VGA)16 65,536 (High Color, XGA)24 16,777,216 (True Color/真彩⾊, SVGA)32 16,777,216 (True Color + Alpha Channel/控制透明度,-游戏特效)关于256⾊,早先的⼀些较为形象的解释是理解为256个油漆桶/256⾊调⾊板,分配给它们编号/索引号。

“叫到哪个颜⾊”哪个颜⾊就出来填充像素。

因为如16⾊、256⾊的⾊彩数有限所以这么解释很简单易理解。

然⽽电脑操作过程中必须经过数码编码,那么实际上256种颜⾊对应256个数码(⼆进制数值),也就是2^2 * 2^3 * 2^3 = 2^8 = 256。

256⾊模式下电脑没有必要去按24bit处理,在当时DOS时代,处理8bit⾊彩⽐24bit要容易多了。

当然256⾊中的任意⼀种颜⾊都可以⽤24bit表⽰,甚⾄可以⽤32bit,64bit表⽰。

但是不管如何,24bit模式就意味着 17.7million种颜⾊。

256⾊模式就意味着256种颜⾊,或者理解为24bit的17.7million种颜⾊中的256个颜⾊。

256⾊模式:共8 bits (B: 2 bits; G: 3 bits; R: 3 bits)。

High color:共16 bits (B: 5 bits, G: 6 bits, R: 5 bits)。

True color:⼀般24bit就是8bit/通道,真彩⾊。

windows下的32位是R、G、B三个通道各占8位共24位,加上明度通道8位,所以是32位,24位也就是R、G、B三个通道各占6位共18位,加上明度通道6位,所以是24位。

★[有截图]什么是位图?单色位图、16色位图、256色位图、24位位图有什么区别?……★

★[有截图]什么是位图?单色位图、16色位图、256色位图、24位位图有什么区别?……★

★[有截图]什么是位图?单色位图、16色位图、256色位图、
24位位图有什么区别?……★
单色位图:图像只能由黑白两颜色构成16色位图:图像只能由16种颜色构成(还有16位色位图:2的16次方,约6万种颜色)24色位图:图像只能由24种颜色构成(好像没这种,应该是24位色位图:2的24次方,约1600万种颜色)256色位图:图像只能由256种颜色构成还有32位色位图:2的32次方,约40亿种颜色)简单来说就是随着数字的增加,图会越来越清晰,色彩越来越饱和鲜亮~选哪个都不一定,一般的话16位或是32位就行,因为你要是选高了,图是很清晰,但是要是倒出来给人看,读图的时候会慢而位图就是以无数的色彩点组成的图案,当你无限放大时你会看到一块一块的像素色块,效果会失真,就是那种马赛克的效果。

位图的格式有BMP、JPEG、GIF等,你要是想区分的话就在PS上把图放大1陪,会失真的就是了矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。

矢量图一般用来表达比较小的图像,移动,缩放,旋转,拷贝,改变属性都很容易,一般用来做成一个图库,比如很多软件里都有矢量图库,你把它拖出来随便你画多大都行。

而位图和矢量图最基本的区别就是位图失真容易失真,而矢量图不会失真(相对而言,你要是非要把一矢量图放大1000倍,他也会有一定的失真~)你最后一题我还真说不明白,我只能说要你导出的是JPEG的图片,那么支持*.jpg;*.jpeg;*.jpe;*.jfif这几种格式的软件都能读出来这张图片,就像有的论坛上面发图有格式限制一样。

DDB与DIB的区别及GDI的作用

DDB与DIB的区别及GDI的作用

DDB与DIB的区别及GDI的作⽤DDB(设备相关位图)DIB(设备⽆关位图)DDB依赖于具体设备:DDB的颜⾊模式必需与输出设备相⼀致。

例如,如果当前的显⽰设备是256⾊模式,那么DDB必然也是256⾊的。

在256⾊以下的位图中存储的像素值是系统调⾊板的索引,其颜⾊依赖于系统调⾊板。

由于DDB⾼度依赖输出设备,所以DDB只能存在于内存中,它要么在视频内存中,要么在系统内存中DIB的与设备⽆关性主要体现在以下两个⽅⾯:DIB的颜⾊模式与设备⽆关。

例如,⼀个256⾊的DIB即可以在真彩⾊显⽰模式下使⽤,也可以在16⾊模式下使⽤。

256⾊以下(包括256⾊)的DIB拥有⾃⼰的颜⾊表,像素的颜⾊独⽴于系统调⾊板。

由于DIB不依赖于具体设备,因此可以⽤来永久性地保存图象。

DIB⼀般是以*.BMP⽂件的形式保存在磁盘中的,有时也会保存在*.DIB⽂件中。

运⾏在不同输出设备下的应⽤程序可以通过DIB来交换图象DDB的创建MFC的CBitmap类封装了DDB。

该类提供了⼏个函数⽤来创建DDB:BOOL LoadBitmap( LPCTSTR lpszResourceName );BOOL LoadBitmap( UINT nIDResource );该函数从资源中载⼊⼀幅位图,若载⼊成功则返回TRUE。

资源位图实际上是⼀个DIB,该函数在载⼊时把它转换成了DDB。

BOOL CreateBitmap( int nWidth, int nHeight, UINT nPlanes, UINT nBitcount, const void* lpBits );该函数⽤来创建⼀幅空⽩的DDB。

参数nWidth和nHeight以像素为单位说明了位图的宽度和⾼度。

nPlanes是DDB的⾊平⾯数,nBitcount是每个⾊平⾯的颜⾊位数。

⼀般来说,nPlanes为1,⽽nBitcount代表DDB中每个像素值所占的位数,但在创建16⾊DDB时,nPlanes为4,⽽nBitcount为1。

相关主题
  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], 才永男因版权原因,仅展示原文概要,查看原文内容请购买。

相关文档
最新文档