位图结构详细资料

合集下载

大学计算机基础教材:位图

大学计算机基础教材:位图

位图位图,又称光栅图,一般用于照片品质的图像处理,是由许多像小方块一样的像素组成的图形。

由像素的位置与颜色值表示,能表现出颜色阴影的变化。

简单说,位图就是以无数的色彩点组成的图案,当你无限放大时你会看到一块一块的像素色块,效果会失真。

常用于图片处理、影视婚纱效果图等,象常用的照片,扫描,数码照片等,常用的工具软件:PHOTOSHOP,PAINTER等。

Photoshop主要处理的是位图图像。

当您处理位图图像时,可以优化微小细节,进行显著改动,以及增强效果。

位图图像,亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的。

这些点可以进行不同的排列和染色以构成图样。

当放大位图时,可以看见赖以构成整个图像的无数单个方块。

扩大位图尺寸的效果是增多单个像素,从而使线条和形状显得参差不齐。

然而,如果从稍远的位置观看它,位图图像的颜色和形状又显得是连续的。

由于每一个像素都是单独染色的,您可以通过以每次一个像素的频率操作选择区域而产生近似相片的逼真效果,诸如加深阴影和加重颜色。

缩小位图尺寸也会使原图变形,因为此举是通过减少像素来使整个图像变小的。

同样,由于位图图像是以排列的像素集合体形式创建的,所以不能单独操作(如移动)局部位图。

处理位图时要着重考虑分辨率处理位图时,输出图像的质量决定于处理过程开始时设置的分辨率高低。

分辨率是一个笼统的术语,它指一个图像文件中包含的细节和信息的大小,以及输入、输出、或显示设备能够产生的细节程度。

操作位图时,分辨率既会影响最后输出的质量也会影响文件的大小。

处理位图需要三思而后行,因为给图像选择的分辨率通常在整个过程中都伴随着文件。

无论是在一个300 dpi的打印机还是在一个2570dpi的照排设备上印刷位图文件,文件总是以创建图像时所设的分辨率大小印刷,除非打印机的分辨率低于图像的分辨率。

如果希望最终输出看起来和屏幕上显示的一样,那么在开始工作前,就需要了解图像的分辨率和不同设备分辨率之间的关系。

位图与矢量图形的实用教学

位图与矢量图形的实用教学

位图与矢量图形的实用教学1. 引言在数字设计和图形编辑领域,位图与矢量图形是两种最基本和常用的图像类型。

它们各自具有独特的特点和应用场景。

本教学文档旨在帮助读者深入理解位图与矢量图形的区别,掌握它们的编辑和应用技巧。

2. 位图2.1 定义位图(Bitmap)是由像素点组成的图像,每个像素点存储了一定的颜色信息。

位图图像在放大时会失去细节,出现锯齿现象,因为它们是由固定的像素点阵构成。

2.2 位图的格式常见的位图格式包括JPEG、PNG、BMP和GIF等。

这些格式各有特点,适用于不同的用途。

- JPEG(Joint Photographic Experts Group):适合有损压缩,适用于照片和复杂图像。

- PNG(Portable Network Graphics):支持无损压缩,适用于透明背景的图像和网络图像。

- BMP(Bitmap):无压缩,文件大小较大,适合存储高质量图像。

- GIF(Graphics Interchange Format):支持256种颜色,适用于简单图形和动画。

2.3 位图的编辑工具Photoshop、PaintShop Pro、GIMP等软件是专业的位图编辑工具,可以进行裁剪、调整大小、颜色编辑、滤镜应用等操作。

3. 矢量图形3.1 定义矢量图形是由数学公式描述的图像,由直线、曲线、多边形等基本几何形状组成。

矢量图形可以无限放大而不失真,因为它们描述的是形状的几何属性而非像素点。

3.2 矢量图形的格式矢量图形的常见格式有SVG(Scalable Vector Graphics)、PDF(Portable Document Format)、EPS(Encapsulated PostScript)和AI(Adobe Illustrator Interchange)。

- SVG:基于XML,适用于网络和屏幕显示。

- PDF:兼容性强,适用于文档和打印。

- EPS:广泛用于印刷行业。

24位位图解析

24位位图解析

我所要介绍的是24位真彩色位图文件的结构。

一个24位真彩色位图文件包括以下三个部分:位图文件头、位图信息头和颜色数据域,这都是我自己起的名字,不知是否与经典有出入,大家应该能够意会。

首先说说位图文件头。

就目前来看我所见到过的位图文件头都位于位图文件的最前部,长都是14个字节,例如有这样一个位图文件(用16位编辑器打开浏览时的效果):那么在第0行从左向右的前14个字节(红色部分)属于位图文件头,各个字节的意义是这样的:42 4D:看作ASCII码,对应的字母为‘BM’,即表示该文件是位图文件;86 00 00 00:四个字节用于表示改为图文件的大小尺寸,要注意的是它们是按低位到高位排列的,那么可以看出整个位图文件的尺寸是0x00000086字节,即134字节。

不难得知,这四个字节最大可以表示4,294,967,296,即可以表示4GB的位图大小;00 00 00 00:查资料知道,这4个字节是保留位,用于存储文件大小的数据。

而我没有找到超过4G的位图,因此不知道这四个自己究竟如何使用。

不过可以推测可能是用跟前面4字节共64 bit来表示文件的大小。

FAT32文件系统下不支持超过4GB的文件,NTFS系统支持;36 00 00 00:也是按从低位到高位排列的,用于表示改位图颜色数据域相对文件开始处的偏移量,可以看到这个位图的颜色数据域是从0x00000036字节处开始的(这里有点想不通,既然前面要用8个字节表示文件大小,为什么这里的偏移量只有4字节?)。

以上就是位图文件头的情况,接下来是位图信息头,仍旧观察前面的位图,从第一行E序字节的28开始(蓝色部分)共40字节,各个字节的含义是:28 00 00 00:表示信息头的长度,0x00000028=40,即位图信息头占40个字节;05 00 00 00:表示位图宽度,单位为像素。

即位图的宽度为5个像素;05 00 00 00:表示位图高度,单位为像素。

位图结构解析

位图结构解析

位图结构解析位图结构解析2011-03-19 00:55 99人阅读评论(0) 收藏举报BMP是一种与硬件设备无关的图像文件格式,使用非常广。

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

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

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

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

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

类型位图一共有两种类型,即:设备相关位图(DDB)和设备无关位图(DIB)。

DDB位图在早期的Windows系统(Windows3.0以前)中是很普遍的,事实上它也是唯一的。

然而,随着显示器制造技术的进步,以及显示设备的多样化,DDB位图的一些固有的问题开始浮现出来了。

比如,它不能够存储(或者说获取)创建这张图片的原始设备的分辨率,这样,应用程序就不能快速的判断客户机的显示设备是否适合显示这张图片。

为了解决这一难题,微软创建了DIB位图格式。

设备无关位图(Device-IndependentBitmap)DIB位图包含下列的颜色和尺寸信息:*原始设备(即创建图片的设备)的颜色格式。

*原始设备的分辨率。

*原始设备的调色板*一个位数组,由红、绿、蓝(RGB)三个值代表一个像素。

*一个数组压缩标志,用于表明数据的压缩方案(如果需要的话)。

PS基础教学课件-3-位图与矢量图

PS基础教学课件-3-位图与矢量图
Adobe PhotoShop
3.4 PS常用的文件格式
3.4.1 常见格式 PNG:图像文件存储格式。(压缩比高,生成文件体积小) GIF:主要运用于网页制作,是一种图形交换模式。 TIFF:被广泛应用于印刷等质量要求较高的图像文件,
可以进行LZW无损压缩。
EPS:常用于排版及绘图软件。
3
位图与矢量图
Adobe PhotoShop
3.5 PS的保存
3.5.1 Ctrl+S 存储 / Ctrl+Shift+S 另存为(存储为)
3
位图与矢量图
Adobe PhotoShop
3.5 PS的保存
3.5.2 存储品质—存储为非PSD文件时
(低品质:文件小,易传播,但画质会很差)
3
位图与矢量图
Adobe PhotoShop
(优化图像,文件相对较小,画质较好)
3
位图与矢量图
Adobe PhotoShop
3.5 PS的保存
3.5.3 格式选项—连续
(主要用于网页显示,先显示比较模糊图像,然后再显示相对比较清晰的图像)
Adobe PhotoShop
3.2 矢量图
3.2.1 矢量图—点、线、线条之间的弯曲来定义图像
(PS 教学-演示实例-3.像素与矢量图像)
3
位图与矢量图
Adobe PhotoShop
3.2 矢量图
3.2.1 矢量图—点、线、线条之间的弯曲来定义图像
(专业矢量图软件 Illustrator)
3
位图与矢量图
Adobe PhotoShop
第3章
位图与矢量图
3
位图与矢量图
Adobe PhotoShop

位图种类及其定义

位图种类及其定义

位图种类及其定义1 位图种类位图的表⽰⽅法:位图是由⼀个个像素点构成,其像素=长像素*宽像素。

每个像素由RGB(A)四个分量表⽰,且每个分量最多可以分为256个等级,即,每个分量要⽤⼀个字节28来表⽰24真彩⾊图(true color):是指每个像素由RGBA四个分量表⽰,且每个分量分为256个级别,则3个字节可以表⽰⼀个像素点。

224*像素个数/8=图⽚⼤⼩(byte)32位真彩图:即每个像素由RGB三个分量表⽰,且每个分量分为256个级别,则4个字节可以表⽰⼀个像素点。

232*像素个数/8=图⽚⼤⼩(byte)16位真彩图:是指每个像素由RGBA四个分量表⽰,且每个分量分为16个级别,则2个字节可以表⽰⼀个像素点。

216*像素个数/8=图⽚⼤⼩(byte)调⾊板(Palette):如果位图中所⽤颜⾊种类较少,则直接⽤⼀个数组将其颜⾊顺序存储,建⽴索引。

⿊⽩⼆⾊图:⼀个像素有⿊⽩两种颜⾊,故⽤⼀个bitt即可,则像素个数*1/8byte + 2*3byte(RGB) = 图⽚⼤⼩(byte)16⾊图:⼀个像素分为16中颜⾊,则⽤0.5个字节可表⽰,则像素个数*0.5byte + 16*3byte(RGB)= 图⽚⼤⼩2 位图格式介绍完位图和调⾊板的概念,下⾯就让我们来看⼀看Windows的位图⽂件(.bmp⽂件)的格式是什么样⼦的。

bmp⽂件⼤体上分成四个部分,如图1.3所⽰。

位图⽂件头BITMAPFILEHEADER位图信息头BITMAPINFOHEADER调⾊板Palette实际的位图数据ImageDate图1.3 Windows位图⽂件结构⽰意图第⼀部分为位图⽂件头BITMAPFILEHEADER,是⼀个结构,其定义如下:typedef struct tagBITMAPFILEHEADER {WORD bfType;DWORD bfSize;WORD bfReserved1;WORD bfReserved2;DWORD bfOffBits;} BITMAPFILEHEADER;这个结构的长度是固定的,为14个字节(WORD为⽆符号16位整数,DWORD为⽆符号32位整数),各个域的说明如下:bfType指定⽂件类型,必须是0x424D,即字符串“BM”,也就是说所有.bmp⽂件的头两个字节都是“BM”。

位图的数据结构

位图的数据结构

位图的数据结构位图的数据结构1:引言1.1 概述1.2 目的1.3 范围2:位图的基本概念2.1 位图的定义2.2 位图的特点2.3 位图的应用领域3:位图的结构3.1 位图的格式3.2 位图文件头3.2.1 文件类型标识3.2.2 文件大小3.2.3 保留字节3.2.4 数据偏移量3.3 位图信息头3.3.1 信息头大小3.3.2 图像宽度和高度3.3.3 颜色平面数3.3.4 每个像素占用的位数3.3.5 压缩类型3.3.6 图像大小3.3.7 印象横向和纵向的像素数 3.3.8调色板的颜色索引数3.3.9重要的颜色索引数3.4 位图数据3.4.1 存储像素点颜色数据4:位图的存储方式4.1 位图的存储顺序4.2 位图的行填充4.3 位图的像素点排列方式5:位图的数据读写操作5.1 读取位图数据5.2 写入位图数据5.3 修改位图数据6:位图的压缩方式6.1 无压缩6.2 RLE压缩6.3 其他压缩算法7:位图的其他操作7.1 缩放位图7.2 旋转位图7.3 裁剪位图8:附件提供相关位图的示例文件,以供参考使用。

注释:1:位图 - 在计算机图形学中,指由二进制位表示图像的一种数据结构。

2:数据结构 - 计算机中组织和存储数据的方式。

3:文件头 - 含有文件的基本信息的数据结构。

4:信息头 - 含有位图的基本信息的数据结构。

5:像素 - 图像中的最小单位。

6:调色板 - 包含颜色信息的数据表。

7:压缩 - 将大数据量的文件压缩为更小尺寸的过程。

本文档涉及附件:1:位图示例文件 - 演示不同格式的位图文件供参考。

本文所涉及的法律名词及注释:1:版权法 - 保护原创作品的法律。

数据结构之位图(bitmap)详解

数据结构之位图(bitmap)详解

数据结构之位图(bitmap)详解1. 概述位图(bitmap)是⼀种⾮常常⽤的结构,在索引,数据压缩等⽅⾯有⼴泛应⽤。

本⽂介绍了位图的实现⽅法及其应⽤场景。

2. 位图实现(1)⾃⼰实现在位图中,每个元素为“0”或“1”,表⽰其对应的元素不存在或者存在。

复制代码代码如下:#define INT_BITS sizeof(int)#define SHIFT 5 // 2^5=32#define MASK 0x1f // 2^5=32#define MAX 1024*1024*1024 //max numberint bitmap[MAX / INT_BITS];/** 设置第i位* i >> SHIFT 相当于 i / (2 ^ SHIFT),* i&MASK相当于mod操作 m mod n 运算*/void set(int i) {bitmap[i >> SHIFT] |= 1 << (i & MASK);}//获取第i位int test(int i) {return bitmap[i >> SHIFT] & (1 << (i & MASK));}//清除第i位int clear(int i) {return bitmap[i >> SHIFT] & ~(1 << (i & MASK));}(2)函数库实现3. 位图应⽤3.1 枚举(1)全组合字符串全组合枚举(对于长度为n的字符串,组合⽅式有2^n种),如:abcdef,可以构造⼀个从字符串到⼆进制的映射关系,通过枚举⼆进制来进⾏全排序。

复制代码代码如下:null——> 000000f——> 000001e——> 000010ef——> 000011……abcedf——> 111111(2)哈⽶尔顿距离枚举算法,复杂度是O(N^2),怎样降低复杂度呢?如果是N 个⼆维的点,那么我们可以怎么⽤较快的⽅法求出通过简单的数学变形,我们可以得到这样的数学公式:通过观察,我们发现每⼀对相同元的符号必定相反,如:x_i-y_i,于是我们有了⼀个⼆进制思想的思路,那就是枚举这些⼆i 维的点的x 轴y 轴前的正负号,这样就可以⽤⼀个0~3 的数的⼆进制形式来表⽰每个元素前⾯的正负号,1表⽰+号,0表⽰−号,如:2 表⽰的⼆进制位形式为10表⽰x_i-y_i。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

GDI基本概念及思想编写代码的一般步骤:先用CreateDC创建(或GetDC获取)device content(DC),然后用GetObject获取(或使用创建object的函数创建)需要的object,并用SelectObject将获取的object选入device content(DC),再使用object进行相应的画图操作,最后用SelectObject将原来的object重新选入DC,并delete 或release删除或释放前面创建或获取的DC。

1.关于device context (DC)设备内容:用来显示位图的地方.四种设备内容:显示器设备内容、打印机设备内容、内存设备内容、Information 设备内容,常用的有显示器DC和内存DC.Device Context Types: There are four types of DCs: display, printer, memory (or compatible), and information.Device context DescriptionDisplay Supports drawing operations on a video display. Printer Supports drawing operations on a printer or plotter. Memory Supports drawing operations on a bitmap.Information Supports the retrieval of device data.其中需要注意的一种类型是:Memory Device Contexts,将在bitmap处理中详细介绍。

创建和获取DC的相关函数:CreateDC,CreateCompatibleDC,GetDC,GetCurrentDC.其中CreateCompatibleDC用于创建内存设备内容.刷新、释放和删除DC的相关函数:ResetDC,ReleaseDC,DeleteDC.前者当DC有变动时用来重置DC,后者用来释放使用万完的DC.DeleteDC与CreateDC对应使用ReleaseDC与GetDC对应使用2.关于graphical object(GDI objects):包括:pen,brush,bitmap,palette,region,path.获取、选择和删除object的相关函数:GetObject,GetCurrentObject,SelectObject,DeleteObject。

关于SelectObject需要注意的地方:在使用完object后需要将原来默认的object重新选入DC替换掉新的object,bitmap只可以选入"内存DC",一个bitmap不能同时选入多个DC.This function returns the previously selected object of the specified type. An application should always replace a new object with the original, default object after it has finished drawing with the new object. An application cannot select a bitmap into more than one DC at a time.如果object是创建的,则使用完后必须删除创建的object,创建object的一些函数如下:GraphicobjectFunctionBit map CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, Creat eDiscardableBitmap, CreateDIBitmapBru sh CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrush Pt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrushColorPaletteCreatePaletteFontCreateFont, CreateFontIndirectPen CreatePen, CreatePenIndirect, ExtCreatePenReg ion CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, C reatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, Create RoundRectRgn下面重点介绍GDI中关于bitmap的处理:关于Bitmap和Device Context:1.关于bitmap的一些基本概念:DIB:设备无关位图。

DDB:设备相关位图。

扫描顺序scan order:bottom-up DIB和top-down DIB。

DDB总是top-down的.2.关于drawing surface:可以理解为绘制图象的区域,程序调用CreateDC或GetDC后,系统在返回DC句柄(handle)前先将一个drawing surface(绘制区域)选入DC,再返回DC 句柄,后面进行的绘制操作将限制在这个drawing surface(绘制区域)中。

例如:如果使用CreateDC创建一个关于显示器的DC(device content),那么绘制区域为显示器的整个屏幕,而如果使用GetDC获取一个对话框窗口或客户区的DC,那么绘制区域则为对话框窗口或客户区。

To creates a DC, call the CreateDC function; to retrieve a DC, call the GetDC function.Before returning a handle that identifies that DC, the system selects a drawing surface into the DC. If the application called the CreateDC function to create a device context for a VGA display, the dimensions of this drawing surface are 640-by-480 pixels. If the application called the GetDC function, the dimensions reflect the size of the client area.3.关于内存设备内容。

因为与某个具体的device content相关,所以又叫作compatible device context.可以象操作其它device content一样操作它,效果相同,唯一的区别是它不会显示出来,必须用BitBlt之类的函数将它的内容COPY(复制)到它相关的具体device content中才能显示出来。

它的主要目的是用来暂存图象数据。

It is an array of bits in memory that an application can use temporarily to store the color data for bitmaps created on a normal drawing surface. Because the bitmap is compatible with the device, a memory DC is also sometimes referred to as a compatible device context.使用CreateCompatibleDC创建Memory Device Contexts。

4.关于bitmap的创建。

一些关于bitmap创建的函数:CreateBitmap, CreateBitmapIndirect两个基本相同,都创建DDB(device-dependent bitmap),只能使用selectobject将创建的bitmap选入相关的(具有相同格式)device。

BitBlt Performs a bit-block transfer. CreateBitmap Creates a bitmap. CreateBitmapIndirect Creates a bitmap.CreateCompatibleBitmap Creates a bitmap compatible with a device.CreateDIBitmap Creates a device-dependent bitmap (DDB) from a DIB.CreateDIBSection Creates a DIB that applications can write to directly.LoadBitmap Loads a bitmap from a module's executable file.StretchBlt Copies a bitmap and stretches or compresses it.StretchDIBits Copies the color data in a DIB.其中BitBlt和StretchBlt和StretchDIBvits用来真正显示bitmap,而LoadBitmap则用来加载资源文件中的bitmap。

5.关于bitmap的存储。

The established bitmap file format consists ofa BITMAPFILEHEADER structure followed bya BITMAPINFOHEADER, BITMAPV4HEADER, or BITMAPV5HEADER structure. An array of RGBQUAD structures (also called a color table) follows the bitmap information header structure. The color table is followed by a second array of indexes into the color table (the actual bitmap data).The bitmap file format is shown in the following illustration.图一可以看出bitmap由BITMAPFILEHEADER+BITMAPINFOHEADER(或其它bitmap header结构)+颜色表+指向颜色表的实际图象数据组成。

相关文档
最新文档