(Translated by https://www.hiragana.jp/)
BMP - 维基百科,自由的百科全书 とべ转到内容ないよう

BMP

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
Windows
扩展めい
.bmp, .dib
互联网媒体ばいたい类型image/bmp[1]
image/x-bmp
类型だいえいType code'BMP '
'BMPf'
'BMPp'
统一类型标识com.microsoft.bmp
开发しゃほろ
格式かくしき类型くらい
自由じゆう格式かくしきWMFてきOSP

BMPBitmapてき縮寫しゅくしゃ,也称为DIBあずか设备无关てきくらい),いち独立どくりつ显示てきくらい数字すうじ图像ぶんけん格式かくしきつね见于ほろ软视まどOS/2操作そうさけい统,Windows GDI API内部ないぶ使用しようてきDIBかずすえ结构あずか BMP ぶんけん格式かくしき几乎しょうどう

图像通常つうじょう保存ほぞんてき颜色深度しんどゆう2(1)、16(4)、256(8)、65536(16かず约1677まん(24)种颜しょく(其中表示ひょうじごとてん所用しょようてきすうすえ)。8图像以是索引さくいん彩色さいしき图像がい,也可以是はい阶图ぞう表示ひょうじ透明とうめいえいtransparency (graphic)てきalphaどおりどう也可以保存在そんざい一个类似于はい图像てき独立どくりつぶんけんちゅう。带有集成しゅうせいてきalphaどおりどうてき32版本はんぽんやめ经随Windows XP现,它在Windowsけいてきとう录界めんけい统主题中ゆう使用しよう

そん储算ほう

[编辑]

BMPぶんけん通常つうじょう压缩てき所以ゆえん它们通常つうじょうどう一幅图像的压缩图像文件格式要大很多。れい如,いち个800×600てき24几乎うらないすえ1.4MBそら间。よし此它们通常つうじょう适合ざいいんとくあるもの其他低速ていそくあるものゆう容量ようりょうげんせいてき媒介ばいかいうえ进行传输。

すえ颜色深度しんどてき不同ふどう,图像じょうてき一个像素可以用一个或者多个字节表示,它由n/8ところ确定(n深度しんど,1包含ほうがん8个数すえ)。图片浏览とうもと于字节的ASCII值计さんぞう素的すてき颜色,しかきさき从调しょくばんちゅう读出しょう应的值。さら为详细的しんいき请参阅下めん关于图文けんてき部分ぶぶん

nくらい2n种颜しょくてき包含ほうがん调色いたてき近似きんじすう以用下面かめんてき公式こうしき计算:

BMPぶんけん大小だいしょう,其中高度こうど(height)かず宽度(width)以像もと为单

需要じゅよう注意ちゅういてき上面うわつら公式こうしきちゅうてき54图文けんてきぶんけんえいHeader (information technology)彩色さいしき调色ばんてき大小だいしょう。 如果图文けん包含ほうがん调色ばん,如24,32图,则位图的近似きんじすう以用下面かめんてき公式こうしき计算:

BMPぶんけん大小だいしょう,其中高度こうど(height)かず宽度(width)以像もと为单

另外需要じゅよう注意ちゅういてき这是いち近似きんじ值,对于nくらいてき图图ぞうらい说,つきかん可能かのうゆう最多さいた种颜しょく,一个特定的图像可能并不会使用这些所有的颜色。よし于彩しょく调色ばん仅仅てい义了图像所用しょようてき颜色,所以ゆえん实际てき彩色さいしき调色ばんはたしょう

如果そう知道ともみち这些值是如何いかいたてき,请参考さんこう下面かめんぶんけん格式かくしきてき部分ぶぶん

よし于存储算ほう本身ほんみ决定てきいんもとすえ几个图像さんすうてき不同ふどう算出さんしゅつてき大小だいしょうあずか实际てきぶんけんだい小将こしょうかいゆう一些细小的差别。

ぶんけん格式かくしき

[编辑]

くらい图图ぞうぶんけんよし若干じゃっかん大小だいしょう固定こていぶんけん头)かず大小だいしょう变的结构たい一定いっていてき顺序构成。よし于该ぶんけん格式かくしき几经えんじ进,这些结构たいてき版本はんぽん也很

くらい图文けんゆかり以下いか结构たい构成:

结构たい名称めいしょう 大小だいしょう 用途ようと 备注
くらい图文けん いや 14 そん储位图文けん通用つうようしんいき 仅在读取ぶんけん时有よう
DIB头 いや 固定こてい存在そんざい7种不どう版本はんぽん そん储位图详细信いき及像もと格式かくしき 紧接在位ざいい图文けん头后
附加ふか掩码 これ 3ある4 DWORD(12ある16节) てい义像もと格式かくしき 仅在DIB头是BITMAPINFOHEADER时存在そんざい
调色ばん 见备ちゅう てい义图ぞうすうすえぞう素数そすう组)所用しょよう颜色 いろふか≤ 8时不能ふのう省略しょうりゃく
はまたかしA これ 结构たい对齐 くらい图文けん头中ぞう素数そすう组偏うつり量的りょうてき产物
ぞう素数そすう いや てい义实际的ぞう素数そすう ぞう素数そすうすえざいDIB头和附加ふか掩码ちゅうてい义。ぞう素数そすう组中ごとぎょうひとし以4节对齐
はまたかしB これ 结构たい对齐 DIB头中ICC色彩しきさい特性とくせいすうすえへんうつり量的りょうてき产物
ICC色彩しきさい特性とくせいすうすえ これ てい色彩しきさい特性とくせい 包含ほうがん外部がいぶぶんけんみちゆかり该文けんらいてい色彩しきさい特性とくせい

下面かめんてき部分ぶぶんしょうかい详细描述图文けんちゅう保存ほぞんてきすうすえ需要じゅよう注意ちゅういてき这是标准图的ぶんけん格式かくしき,其他いち些位图图ぞう可能かのうすえなま成文せいぶんけんてき应用ほどじょ同所どうしょ使用しよう格式かくしき可能かのうかいゆう细微てき别。

くらい图文けん

[编辑]

这部分数ぶんすうすえ块位于文けん开头,よう于进行文こうぶんけんてき识别。典型てんけいてき应用ほどじょかいくびさき普通ふつう读取这部分数ぶんすうすえ以确てき确是图文けん并且ぼつゆう损坏。所有しょゆうてき整数せいすう值都以しょうはしじょそんそく最低さいてい有效ゆうこうまえおけ)。

へんうつりりょう 大小だいしょう 用途ようと
0000h 2 よう于标识BMPDIBぶんけんてきすういち般为0x42 0x4D,そくASCIIてきBM。以下いか可能かのうてき值:
  • BM – Windows 3.1x, 95, NT, ... etc.
  • BA – OS/2 struct Bitmap Array
  • CI – OS/2 struct Color Icon
  • CP – OS/2 const Color Pointer
  • IC – OS/2 struct Icon
  • PT – OS/2 Pointer
0002h 4 BMPぶんけんてき大小だいしょう(单位为字节)
0006h 2 保留ほりゅう;实际值因创建ほどじょ而异
0008h 2 保留ほりゅう;实际值因创建ほどじょ而异
000Ah 4 くらい图数すえぞう素数そすう组)てきへんうつり,也就おこりはじめ

DIB头

[编辑]

部分ぶぶんつげ诉应ようほどじょ图像てき详细しんいきざいへいまくじょう显示图像しょうかい使用しよう这些しんいき,它从ぶんけんてきだい15个字节开はじめ

这部分数ぶんすうすえ块对应了WindowsOS/2ちゅうてき内部ないぶ使用しようてき头结构以及其它一些版本的变体。ただし所有しょゆう版本はんぽんひとし以一个DWORD(32)开始,よう以说あかり该数すえかたまりてき大小だいしょう使つかいとく应用ほどじょのう够根すえ这个大小だいしょうらい区分くぶん该图ぞう实际使用しようりょう哪种版本はんぽんてきDIB头结构。

存在そんざい版本はんぽんてき头结构的原因げんいんほろ软对DIB格式かくしき进行过多擴充かくじゅう下表かひょうそく所有しょゆう不同ふどう版本はんぽんてきDIB头:

大小だいしょう 结构名称めいしょう 作業さぎょう系統けいとう支援しえん ところ特性とくせい
12 BITMAPCOREHEADER
OS21XBITMAPHEADER
OS/23.0版本はんぽん以来いらいてきWindows
64 BITMAPCOREHEADER2
OS22XBITMAPHEADER
OS/2 添加てんかはん调网へい添加てんかRLE及霍夫曼1D压缩。
40 BITMAPINFOHEADER Windows 3.0及更だか版本はんぽん 删除RLE-24及霍おっと曼1D压缩;添加てんか16/32ぞうもと格式かくしき添加てんか选的RGB掩码。
52 BITMAPV2INFOHEADER Undocumented 删除选的RGB掩码;添加てんか必选てきRGB掩码。Adobe Photoshop
56 BITMAPV3INFOHEADER Not officially documented 添加てんか必选てきAlphaどおりみち掩码。Adobe Photoshop
108 BITMAPV4HEADER Windows 95/NT4及更だか版本はんぽん 添加てんか色彩しきさいそら间类がたとぎ校正こうせい
124 BITMAPV5HEADER Windows 98/2000及更だか版本はんぽん 添加てんかICC色彩しきさい特性とくせい

BITMAPCOREHEADERきさきてき版本はんぽんただざいまえ一版本结构末尾追加字段。

于兼よう性的せいてき考量こうりょうだい多数たすう应用ほどじょ使用しよう较旧版本はんぽんてきDIB头保存ほぞんぶんけんざいこう虑OS/2てきじょう况下,目前もくぜん通用つうようてき格式かくしき为BITMAPINFOHEADER版本はんぽん内容ないようざい下表かひょうちゅうれつじょゆう特殊とくしゅ说明,其中所有しょゆう值均为无符号ふごう整数せいすう

へんうつりりょう 大小だいしょうもとぐみ 用途ようと
0Eh 4 该头结构てき大小だいしょう(40节)
12h 4 くらい图宽,单位为像もとゆう符号ふごう整数せいすう
16h 4 くらい图高,单位为像もとゆう符号ふごう整数せいすう
1Ah 2 色彩しきさい平面へいめんすうただゆう1为有效ゆうこう
1Ch 2 まい个像もとしょうらないすうそく图像てきいろふか典型てんけい值为1、4、8、16、2432
1Eh 4 ところ使用しようてき压缩方法ほうほう值见下表かひょう
22h 4 图像大小だいしょう指原さすはらはじめ图数すえてき大小だいしょう(详见きさきぶん),あずかぶんけん大小だいしょう同一どういつ概念がいねん
26h 4 图像てきよこむこうぶんべんりつ,单位为像もとごとまいゆう符号ふごう整数せいすう
2Ah 4 图像てき纵向ぶんべんりつ,单位为像もとごとまいゆう符号ふごう整数せいすう
2Eh 4 调色いたてき颜色すう,为0时表示ひょうじ颜色すう为默认的2いろふか
32h 4 重要じゅうよう颜色すう,为0时表示ひょうじ所有しょゆう颜色重要じゅうようてき通常つうじょう使用しようほん

注意ちゅうい:BI_RGB图像てき图像だい小字こあざだん以为0。

压缩方法ほうほうだん节#30-33)てき有效ゆうこう值如下表かひょう

标识 压缩方法ほうほう 备注
0 BI_RGB さいつね
1 BI_RLE8 RLE 8/ぞうもと ただのうよう於格しき为8/ぞう素的すてき
2 BI_RLE4 RLE 4/ぞうもと ただのうよう於格しき为4/ぞう素的すてき
3 BI_BITFIELDS くらいだんあるもの霍夫曼1D压缩(BITMAPCOREHEADER2) ぞうもと格式かくしきよし掩码指定していあるくらい图经过霍おっと曼1D压缩(BITMAPCOREHEADER2)
4 BI_JPEG JPEGあるRLE-24压缩(BITMAPCOREHEADER2) くらい包含ほうがんJPEG图像ある经过RLE-24压缩(BITMAPCOREHEADER2)
5 BI_PNG PNG くらい包含ほうがんPNG图像
6 BI_ALPHABITFIELDS くらいだん 针对Windows CE .NET 4.0及之きさき版本はんぽん

注意ちゅうい:BI_JPEGBI_PNG仅对しるしつくえ驱动有效ゆうこう支持しじへいまく渲染。

じょ此之がい,OS/2てきBITMAPCOREHEADER头也鲜见:

へんうつりりょう 大小だいしょうもとぐみ 用途ようと
0Eh 4 该头结构てき大小だいしょう(12节)
12h 2 くらい图宽,单位为像もと
14h 2 くらい图高,单位为像もと
16h 2 色彩しきさい平面へいめんすうただゆう1为有效ゆうこう
18h 2 まい个像もとしょうらないすう典型てんけい值为1、4、824

注意ちゅうい:OS/2 BITMAPCOREHEADERてき图都压缩てき,而且不能ふのう16ある32/ぞうもと。OS/2 BITMAPCOREHEADERちゅうてき所有しょゆう值均为无符号ふごう整数せいすう

调色ばん

[编辑]

部分ぶぶんてい义了图像ちゅう所用しょようてき颜色。如上じょじょうしょじゅつ图图ぞう一个像素接着一个像素储存,まい个像もと使用しよう一个或者多个字节的值表示,しょ以调しょくいたてき目的もくてき就是ようつげ诉应ようほどじょ这些值所对应てき实际颜色。

典型てんけいてき图文けん使用しようRGB彩色さいしき模型もけいざい这种模型もけいちゅうまい种颜しょくよし不同ふどう强度きょうど(从0いた最大さいだい强度きょうどてき红色(R)、绿色(G)かず蓝色(B)组成てき,也就说,まい种颜しょく使用しよう红色、绿色蓝色てき所定しょてい义。

在位ざいい图文けんてき实现ちゅう,调色いた包含ほうがん很多条目じょうもく条目じょうもく个数就是图像ちゅうしょ使用しようてき颜色てき个数。

typedef struct tagRGBQUAD {
    BYTE rgbBlue;
    BYTE rgbGreen;
    BYTE rgbRed;
    BYTE rgbReserved;
}   RGBQUAD;

まい个条ようらい描述いち种颜しょく包含ほうがん4个字节,其中さん表示ひょうじ蓝色、绿色红色,だい四个字节没有使用(だい多数たすう应用ほどじょはた它设为0);对于ごと个字节,すう值0表示ひょうじ该颜しょく分量ぶんりょうざいとうまえてき颜色ちゅうぼつゆう使用しよう,而数值255表示ひょうじ这种颜色分量ぶんりょう使用しよう最大さいだいてき强度きょうど

ぞうもとそん

[编辑]

表示ひょうじ图中ぞう素的すてきもと以行为单对齐そん储的,まい一行的大小都向上取整为4节(32DWORD)てき倍数ばいすう。如果图像てき高度こうどだい于1,个经过填たかし实现对齐てきぎょう形成けいせいりょうぞう素数そすう

かんせいそん储的一行像素所需的字节数可以通过这个公式计算:

ImageWidth以像もと为单

ぞう素数そすう

[编辑]

部分ぶぶん逐个ぞうもと表示ひょうじ图像。まい个像もと使用しよう一个或者多个字节表示。

通常つうじょうぞうもと从下いたじょう、从左いたみぎ保存ほぞんてきただし如果使用しようてきBITMAPCOREHEADER,么未压缩てきWindows图还以从じょういたしもそん储,此时图像高度こうど为负值。

まい一行的末尾通过填充若干个字节的数据(并不一定いってい为0)使つかい该行てき长度为4节的倍数ばいすうぞう素数そすう组读入内じゅだいそんきさきまい一行的起始地址必须为4てき倍数ばいすう。这个げんせい仅针对内そんちゅうてきぞう素数そすう组,针对そん储时,仅要求ようきゅうごといちぎょうてき大小だいしょう为4节的倍数ばいすう,对文けんてきへんうつりぼつ有限ゆうげんせい

れい如:对于24しょくてき图,如果它的宽度为1ぞうもと么除りょうごといちぎょうてきすうすえ(蓝、绿、红)需要じゅよううらない3节外,还会はまたかし1节;而如はて宽为2ぞうもと,则需要じゅよう2节的はまたかし;宽为3ぞうもと时,需要じゅよう3节填たかし;宽为4ぞうもと时则需要じゅようはまたかし

图像しょうどうてき条件下じょうけんか图图ぞうぶんけん通常つうじょう使用しよう其它压缩算法さんぽうてき图像ぶんけんだい很多。

压缩

[编辑]

索引さくいんしょく图像使用しよう4ある8RLEある霍夫曼1D算法さんぽう压缩。

OS/2 BITMAPCOREHEADER2 24しょく图像则可以使用しよう24RLE算法さんぽう压缩。

16しょくあずか32しょく图像はじめ终为压缩すうすえ

如果需要じゅようにんなんしょくふかてき图像以以压缩形式けいしきそん储。

ぞうもと格式かくしき

[编辑]

无论磁盘じょうてき图文けん还是ないそんちゅうてき图图ぞうぞうもとよしいち组位(英語えいごbit表示ひょうじ

  • まいぞうもとうらない1いろふか为1,1bpp)てき格式かくしき支持しじ2种不どう颜色。ぞうもと直接ちょくせつ对应いち个位てき值,さいひだりぞうもと对应だい一个字节的最高位。使用しよう该位てき值用らい对色ひょうてき索引さくいん:为0表示ひょうじしょくひょうちゅうてきだいいち项,为1表示ひょうじしょくひょうちゅうてきだい项(そくさいきさきいち项)。
  • まいぞうもとうらない2いろふか为2,2bpp)てき格式かくしき支持しじ4种不どう颜色。まい个字节对应4个像もとさいひだりぞうもと为最だかてき两位(仅在Windows CEちゅう有效ゆうこう)。需要じゅよう使用しようぞうもと值来对一张含有がんゆう4个颜しょく值的しょくひょう进行索引さくいん
  • まいぞうもとうらない4いろふか为4,4bpp)てき格式かくしき支持しじ16种不同ふどうてき颜色。まい个字节对应2个像もとさいひだりぞうもと为最だかてきよん需要じゅよう使用しようぞうもと值来对一张含有がんゆう16个颜しょく值的しょくひょう进行索引さくいん
  • まいぞうもとうらない8いろふか为8,8bpp)てき格式かくしき支持しじ256种不同ふどうてき颜色。まい个字节对应1个像もと需要じゅよう使用しようぞうもと值来对一张含有がんゆう256个颜しょく值的しょくひょう进行索引さくいん
  • まいぞうもとうらない16いろふか为16,16bpp)てき格式かくしき支持しじ65536种不同ふどうてき颜色,まい2个字节(byte)对应いち个像もと。该像素的すてき不透明ふとうめい英語えいごalpha)、红、绿、蓝采样值そくそん储在该2个字节中。
  • まいぞうもとうらない24いろふか为24,24bpp)てき格式かくしき支持しじ16777216种不同ふどうてき颜色,まい3个字节对应一个像もと
  • まいぞうもとうらない32いろふか为32,32bpp)てき格式かくしき支持しじ4294967296种不同ふどうてき颜色,まい4个字节对应一个像もと

为了区分くぶん一个颜色值中的哪些位表示哪种采样值,DIB头给りょう一套默认规则,どう时也まこと使用しようBITFIELDSはたぼう组位指定してい为像もとちゅうてきぼうつうどう

其他

[编辑]

つきかんぶんけん大小だいしょう较大,ただし图文けんてき简单せいざいほろ软视まど其他地方ちほうてき广泛使用しよう以及这种格式かくしきてき优秀ぶん档标じゅん以及ぼつゆう专利约束,使つかいとく它成为其操作そうさけい统图ぞう处理ほどじょのう够读うつしてき一种最为常用的格式。

X Window System使用しよう类似てき.XBM格式かくしき表示ひょうじいち黑白くろしろ图像以及.XPMpixelmap表示ひょうじ彩色さいしき图像。另外还有いち.RAW格式かくしき,它除りょう保存ほぞん原始げんしかずすえこれがいぼつゆうにんなん其他しんいき。其他还有Portable Pixmap file format.PPMTruevision TGA.TGA),ただし它们ようとく很少あるものただよう特殊とくしゅ目的もくてきつきかん其他格式かくしき保存ほぞん为“图”(あずかりょう不同ふどう),ただし它们使用しようすうすえ压缩あるもの颜色索引さくいん所以ゆえん它们严格义上てき图。

よし于包含有がんゆう冗余しんいき,许多BMPぶんけん使用しよう类似于ZIP这样てき无损すうすえ压缩算法さんぽうのう取得しゅとく很好てき压缩效果こうか

まいり

[编辑]

参考さんこう文献ぶんけん

[编辑]
  • Feng Yuan:《Windows Graphics Programming——Win32 GDI and DirectDraw》,Prentice Hall PTR, 1st ed.,2000-12-1,ISBN: 0-13-086985-6, 1234 pages. Chapter 10: Bitmap Basics; Chapter 11:Advanced Bitmap Graphics; Chapter 12:Image Processing Using Windows Bitmaps;

外部がいぶ链接

[编辑]
  1. ^ IANA Considerations. Windows Image Media Types: sec. 5. RFC 7903.