?? 109.txt
字號(hào):
位圖文件內(nèi)部初探
最 常 用 的 幾 種 圖 象 文 件 格 式 怎 樣 存 儲(chǔ) 圖 象 自 從 我 在 十 四 年 前 買 回 第 一 臺(tái) pc 以 后, 我 就 一 直 對(duì) 計(jì) 算 機(jī) 用 1 和 0 組 成 的 數(shù) 據(jù) 流 來 存 儲(chǔ) 那 些 復(fù) 雜 的 信 息 很 感 興 趣。 最 初 引 起 我 注 意 的 是 當(dāng) 時(shí) 曾 很 流 行 的 印 在 雜 志 上 的 basic 程 序 清 單, 它 們 帶 有 很 多 數(shù) 據(jù) 段, 你 可 將 它 們 鍵 入 并 運(yùn) 行, 以 建 立 其 他 的 程 序。 從 這 里 我 明 白 了 任 何 程 序 無 論 它 多 么 復(fù) 雜, 也 只 不 過 是 一 系 列 的 針 對(duì) 計(jì) 算 機(jī) 微 處 理 器 的 指 令 而 已。 接 著, 我 對(duì) ascii 碼 有 了 興 趣, 然 后 是 字 處 理 文 件 格 式, 再 后 來 嗎, 您 就 看 到 了 圖 象。
直 至 今 天 仍 讓 我 著 迷 的 一 種 技 術(shù) 是 位 圖 文 件 存 儲(chǔ)。 一 個(gè) 位 圖 存 儲(chǔ) 了 計(jì) 算 機(jī) 上 能 夠 再 現(xiàn) 一 幅 圖 象 所 需 的 信 息。 我 們 經(jīng) 常 在 顯 示 器 上 看 到 圖 象, 例 如 一 幅 美 麗 的 日 落, 然 而 在 計(jì) 算 機(jī) 眼 里 它 只 是 一 堆 0 和 1 的 組 合。 歸 根 結(jié) 底, 也 就 是 位 圖 文 件 里 的 這 些 位 和 字 節(jié) 來 告 訴 計(jì) 算 機(jī) 這 幅 圖 象 中 每 個(gè) 象 素 該 是 什 么 顏 色, 然 后 計(jì) 算 機(jī) 把 位 圖 中 的 顏 色 轉(zhuǎn) 化 成 與 它 的 顯 示 卡 兼 容 的 格 式, 最 后 輸 出 到 顯 示 器 上。
這 個(gè) 過 程 中 有 趣 的 是 計(jì) 算 機(jī) 怎 樣 解 釋 位 圖 中 的 數(shù) 據(jù), 位 圖 文 件 有 多 種 格 式, 每 種 格 式 都 有 自 己 的 方 法 對(duì) 象 素 數(shù) 據(jù) 編 碼 并 給 出 此 種 格 式 所 要 求 的 一 些 其 他 信 息, 之 所 以 windows 95 能 夠 讀 取 .bmp 文 件 而 不 能 讀 .gif 文 件, 就 是 因 為 他 的 設(shè) 計(jì) 人 員 使 paint 程 序 能 夠 對(duì) 以 .bmp 格 式 存 儲(chǔ) 的 圖 象 數(shù) 據(jù) 進(jìn) 行 解 碼, 而 不 是 .gif。
到 這 里。 您 一 定 很 想 知 道 一 個(gè) 位 圖 文 件 里 究 竟 是 什 么, 一 種 格 式 同 另 一 種 又 有 什 么 不 同 ? 那 么 就 讓 我 們 來 簡 單 地 看 看 在 pc 機(jī) 上 常 用 的 六 種 位 圖 文 件 格 式。 當(dāng) 然 還 有 其 他 的 文 件 格 式, 例 如 對(duì) 于 矢 量 圖 形, 就 是 存 儲(chǔ) 一 些 再 現(xiàn) 圖 象 的 指 令 而 不 是 每 個(gè) 象 素 的 顏 色 數(shù) 據(jù), 但 是 在 這 里 討 論 的 這 六 種 位 圖 文 件 格 式 才 是 您 平 時(shí) 工 作 最 可 能 使 用 的。
bmp 文 件
bmp(bitmap 的 縮 寫) 文 件 格 式 是 windows 本 身 的 位 圖 文 件 格 式, 所 謂 本 身 是 指 windows 內(nèi) 部 存 儲(chǔ) 位 圖 即 采 用 這 種 格 式。 一 個(gè) .bmp 格 式 的 文 件 通 常 有 .bmp 的 擴(kuò) 展 名, 但 有 一 些 是 以 .rle 為 擴(kuò) 展 名 的, rle 的 意 思 是 行 程 長 度 編 碼(run length encoding)。 這 樣 的 文 件 意 味 著 其 使 用 的 數(shù) 據(jù) 壓 縮 方 法 是 .bmp 格 式 文 件 支 持 的 兩 種 rle 方 法 中 的 一 種。
bmp 文 件 可 用 每 象 素 1、 4、 8、 16 或 24 位 來 編 碼 顏 色 信 息, 這 個(gè) 位 數(shù) 稱 作 圖 象 的 顏 色 深 度, 它 決 定 了 圖 象 所 含 的 最 大 顏 色 數(shù)。 一 幅 1-bpp(位 每 象 素, bit per pixel) 的 圖 象 只 能 有 兩 種 顏 色。 而 一 幅 24-bpp 的 圖 象 可 以 有 超 過 16 兆 種 不 同 的 顏 色。
下 一 頁 的 圖 說 明 了 一 個(gè) 典 型 .bmp 文 件 的 結(jié) 構(gòu)。 它 是 以 256 色 也 就 是 8-bpp 為 例 的, 文 件 被 分 成 四 個(gè) 主 要 的 部 分: 一 個(gè) 位 圖 文 件 頭, 一 個(gè) 位 圖 信 息 頭, 一 個(gè) 色 表 和 位 圖 數(shù) 據(jù) 本 身。 位 圖 文 件 頭 包 含 關(guān) 于 這 個(gè) 文 件 的 信 息。 如 從 哪 里 開 始 是 位 圖 數(shù) 據(jù) 的 定 位 信 息, 位 圖 信 息 頭 含 有 關(guān) 于 這 幅 圖 象 的 信 息, 例 如 以 象 素 為 單 位 的 寬 度 和 高 度。 色 表 中 有 圖 象 顏 色 的 rgb 值。 對(duì) 顯 示 卡 來 說, 如 果 它 不 能 一 次 顯 示 超 過 256 種 顏 色, 讀 取 和 顯 示 .bmp 文 件 的 程 序 能 夠 把 這 些 rgb 值 轉(zhuǎn) 換 到 顯 示 卡 的 調(diào) 色 板 來 產(chǎn) 生 準(zhǔn) 確 的 顏 色。
bmp 文 件 的 位 圖 數(shù) 據(jù) 格 式 依 賴 于 編 碼 每 個(gè) 象 素 顏 色 所 用 的 位 數(shù)。 對(duì) 于 一 個(gè) 256 色 的 圖 象 來 說, 每 個(gè) 象 素 占 用 文 件 中 位 圖 數(shù) 據(jù) 部 分 的 一 個(gè) 字 節(jié)。 象 素 的 值 不 是 rgb 顏 色 值, 而 是 文 件 中 色 表 的 一 個(gè) 索 引。 所 以 在 色 表 中 如 果 第 一 個(gè) r/g/b 值 是 255/0/0, 那 么 象 素 值 為 0 表 示 它 是 鮮 紅 色, 象 素 值 按 從 左 到 右 的 順 序 存 儲(chǔ), 通 常 從 最 后 一 行 開 始。 所 以 在 一 個(gè) 256 色 的 文 件 中, 位 圖 數(shù) 據(jù) 中 第 一 個(gè) 字 節(jié) 就 是 圖 象 左 下 角 的 象 素 的 顏 色 索 引, 第 二 個(gè) 就 是 它 右 邊 的 那 個(gè) 象 素 的 顏 色 索 引。 如 果 位 圖 數(shù) 據(jù) 中 每 行 的 字 節(jié) 數(shù) 是 奇 數(shù), 就 要 在 每 行 都 加 一 個(gè) 附 加 的 字 節(jié) 來 調(diào) 整 位 圖 數(shù) 據(jù) 邊 界 為 16 位 的 整 數(shù) 倍。
并 不 是 所 有 的 bmp 文 件 結(jié) 構(gòu) 都 象 表 中 所 列 的 那 樣, 例 如 16 和 24-bpp, 文 件 就 沒 有 色 表, 象 素 值 直 接 表 示 rgb 值, 另 外 文 件 私 有 部 分 的 內(nèi) 部 存 儲(chǔ) 格 式 也 是 可 以 變 化 的。 例 如, 在 16 和 256 色 .bmp 文 件 中 的 位 圖 數(shù) 據(jù) 采 用 rle 算 法 來 壓 縮, 這 種 算 法 用 顏 色 加 象 素 個(gè) 數(shù) 來 取 代 一 串 顏 色 相 同 的 序 列, 而 且, windows 還 支 持 os/2 下 的 .bmp 文 件, 盡 管 它 使 用 了 不 同 的 位 圖 信 息 頭 和 色 表 格 式。
pcx 文 件
.pcx 是 在 pc 上 成 為 位 圖 文 件 存 儲(chǔ) 標(biāo) 準(zhǔn) 的 第 一 種 圖 象 文 件 格 式。 它 最 早 出 現(xiàn) 在 zsoft 公 司 的 paintbrush 軟 件 包 中, 在 80 年 代 早 期 授 權(quán) 給 微 軟 與 其 產(chǎn) 品 捆 綁 發(fā) 行, 而 后 轉(zhuǎn) 變 為 microsoft paintbrush, 并 成 為 windows 的 一 部 分。 雖 然 使 用 這 種 格 式 的 人 在 減 少, 但 這 種 帶 有 .pcx 擴(kuò) 展 名 的 文 件 在 今 天 仍 是 十 分 常 見 的。
pcx 文 件 分 為 三 部 分, 依 次 為: pcx 文 件 頭, 位 圖 數(shù) 據(jù) 和 一 個(gè) 可 選 的 色 表。 文 件 頭 長 達(dá) 128 個(gè) 字 節(jié), 分 為 幾 個(gè) 域, 包 括 圖 象 的 尺 寸 和 每 個(gè) 象 素 顏 色 的 編 碼 位 數(shù)。 位 圖 數(shù) 據(jù) 用 一 種 簡 單 的 rle 算 法 壓 縮, 最 后 的 可 選 色
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -