📄 专业tc--图形篇3.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0034)http://tc2001.myrice.com/base4.htm -->
<HTML><HEAD><TITLE>专业TC--图形篇</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2600.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<META content=none name="Microsoft Border"></HEAD>
<BODY>
<H1 style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" align=center>
<FONT color=#ff0000><B>图形文件的格式</B></FONT></H1>
<H1 style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" align=center><FONT
color=#00ff00><A href="http://tc2001.myrice.com/index.htm"><FONT
size=5><B>回首页</B></FONT></A></FONT> <A
href="http://tc2001.myrice.com/base3.htm"><FONT size=5>上一页</FONT></A> <A
href="http://tc2001.myrice.com/base5.htm"><FONT color=#00ff00
size=5>下一页</FONT></A></H1>
<P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" align=left></P>
<HR align=left>
<P align=left>
近年来,个人计算机和工作站上的图形工具比几年前的巨型机上的图形工具还要多,计算机图形学的领域也随之扩展。过去,当人们编出越来越多的图形应用程序后,需要把图像文件存储下来以作日后的处理或显示之用。在缺乏广为接受的标准的情况下,
每个应用程序开发者都提出文件格式以支持其应用程序。从八十年代初以后,官方的边准组织开始提出首批通用的图形子程序和图形文件,以促成文件代码在不同的应用程序和硬件上的可移植性。<BR>随之而来的结果试图性格是数量的急剧膨胀,在数以百计的应用程序中所使用的格式由几十种之多。例如在著名的图形处理软件——PhotoShop
5.0中用到的图像文件格式、子格式就共有三十多种。<BR>简单举几种格式来说:PCX、MacPaint、Tiff、Gif、GEM、IFF/ILBM、Targa、BMP/DIB、WPG、PostScript、Sun、PBM、XBM、JPEG、FITS、DXF、HP-GL、LotusPic、PCL、WMF、EPS、CGM、RIB、FLI/FLC、MPEG、PDF……。对于如此繁杂的文件格式,我们每不可能接触或掌握全部的格式。在本章中,我们对最常用的文件格式进行分类归档,对读者作以详细的介绍。下面让我们先来看一下最常见的文件格式——BMP文件。<BR><BR>1.优点
在Microsoft Windows下得到广泛使用,支持稀疏的位元映射。<BR>2.缺点 除了Microsoft
Windows外,无法在其他环境下使用。<BR>3.变体 Windows 3.0还可以从OS/2 Presentation Manager
l.x中读取BMP文件。<BR>4.综述 BMP格式又称为DIB,也就是Microsoft Windows设备无关位元映射(Microsoft Device
Independent
Bitmap)文件,Bmp可以包含每个象点l位元、4位元、8位元或24位元的图形。其中1、4和8位元图形有彩色映像,而24位元图形则是全彩(TrueColor)。<BR><BR>一、文件头<BR>所有的DIB文件含有一个共同的文件头。<BR>bfOffBits字段含有从文件头的最后(字节14)到图像数据位开始之间的字节数,这样就能方便地跳过位图头。<BR>文件位图格式的两种变体可以通过查看位图头的第一个字(文件偏移字节14)来区分如果该字为12,则是一个os/2
格式文件,如果为40,则是Windows
3.x格式文件。<BR>二、Windows的位图头<BR>文件图后面为位图头和可选的彩色图像。位图头的结构有时称作BITMAPINFO,而带有色彩对应表的则为BITMAPINFOHEADER。<BR>三、色彩对应表<BR>使用每个像素1、4或8位的图像必然有一个色彩对应表。彩色映像的大小一般为2、16或256个表项,但如果图像不需要一个色彩全集,则表项可以更少些。如果biClrUsed字段为非零,则它包含使用的色彩数目,同时它也是色彩对应表的表项数目。如果字段为0,则色彩对应表为全部大小。24位图像没有色彩对应表,这种图像是直接RGB色彩。biClrUsed字段可以是非零,以提供一个建议的色彩大小。<BR>由于显示设备可能不具备图像所需的那么多色彩,因此色彩对应表中的表项应该让最重要的色彩排列在先。
biClrImportant字段如果不为零,则指出了对于重新生成好的图像而言,有多少种颜色是重要的。<BR>色彩对应表每个表项都有四个字节。<BR>四、Windows的位图数据<BR>位图数据紧跟在色彩对应表的后面。数据可以是不压缩的,如果要压缩,则4位和8位的图像可以使用一种RLE压缩方法。<BR>位从逻辑角度看是每次存入一行(没有压缩时从物理角度看也是如此),每行被填充到一个四字节边界。每个像素一位的位图<BR>每个像素只有一位,每字节有8个像素。字节中的最高位对应于最左边的像素。每个像素四位的位图,没有压缩的图像是每个字节有两个像素,高四位为最左边的像素,且每行填充到一个四字节边界。<BR>压缩过的图像使用一种RLE编码格式,由一系列组组成。有三种类型的组:重复组、文字组和特殊组。<BR>重复组由两个字节组成。第一个字节是像素计数值,第两个字节是一对象素,该组用第一个字节表示像素数,第两个字节为2个像素。例如,十六进制字节:05
24表示像素2 4 2 4
2<BR>文字由一个零字节、一个像素值字节和文字像素字节组成。像素计数值必须至少为3(只有一个或两个像素时可以用重复组编码)。文字像素用0填充到一个偶数值。<BR>例如,十六进制字节:<BR>0005
1234 5000(注意填充到偶数字节)<BR>表示像素 1 2 3 4 5<BR>特殊序列00 00表示一行的结束,特殊序列00
01表示位图的结束,特殊序列00 02 xx
yy是一个位置增量,说明把图像向右走xx个像素和向下走yy个像素。每个像素8位的位图<BR>没有压缩的图像为一个字节一个像素,每行填充到四字节边界。压缩过的图像使用RLE编码格式,后者由一系列的组组成。组有三种类型:重复组、文字组和特殊组。重复组由两个字节组成,第一个字节为像素计数值,第两个字节为像素值。例如,十六进制字节:05
24表示像素 24 24 24 24
24。文字组由一个零字节、一个像素计数值字节和文字像素字节组成。像素计数值必须至少是3。文字像素用0填充到偶数字节数。<BR>例如,十六进制字节:<BR>0005
1234 5678 9A00(注意填充到偶数字节)表示像素 12 34 56 78
9A特殊序列与四位的位图一样。每个像素二十四位的位图。每个像素为3个字节,顺序依次为红、绿和蓝的值。每行用0填充到四字节的边界。<BR>以上我们介绍了bmp文件的格式,下面我们看一下如何用C++语言来实现bmp文件的读取,下面是例程bmpread中的DisplayBitmap函数:<BR>BOOL
CMainWindow::DisplayBitmap(HDC hDC, HBITMAP hBitmap,<BR>int X, int Y, DWORD
RopCode)<BR>{kk1}<BR>// Create compatible display context<BR>HDC hCompatDC =
CreateCompatibleDC(hDC);<BR><BR>// Select bitmap into compatible display
context<BR>HBITMAP hOldBitmap = SelectBitmap(hCompatDC, hBitmap);<BR><BR><BR>//
Get dimensions of bitmap<BR>BITMAP BM;<BR>GetObject(hBitmap, sizeof(BM),
&BM);<BR><BR>// Blast those bits to the screen<BR>BOOL result;<BR>result =
BitBlt(hDC, X, Y, BM.bmWidth, BM.bmHeight,<BR>hCompatDC, 0, 0,
RopCode);<BR><BR>// De-select the bitmap<BR>SelectBitmap(hCompatDC,
hOldBitmap);<BR><BR>// Clean up after we are
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -