明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

找到了,JPG格式原理。

[摘要]文 件 格 式 分 析 技 術(shù) 講 座   這 種 文 件 早 在 很 多 年 前 的 浩 瀚 光 盤 圖 書 館 上 就 出 現(xiàn) 過 , 不 知 是 誰 設(shè) 計(jì) 的 格 式 , 壓 縮 率 還 ...
文 件 格 式 分 析 技 術(shù) 講 座

  這 種 文 件 早 在 很 多 年 前 的 浩 瀚 光 盤 圖 書 館 上 就 出 現(xiàn) 過 , 不 知 是 誰 設(shè) 計(jì) 的 格 式 , 壓 縮 率 還 是 比 較 高 的 , 比 單 用 LZW 的 gif 或 run length 的 PCX 壓 縮 率 都 要 好 。因 為 他 的 壓 縮 方 法 比 較 適 于 二 值 圖 象 , 一 般 來 說 文 件 的 大 小 只 是 gif 文 件 的 三 分 之 一 。
  我 分 析 了 浩 瀚 光 盤 的 隨 盤 閱 讀 程 序 , 對 文 件 的 解 碼 和 顯 示 在 一 個(gè) 叫 做 revv.exe 的 程 序 中 進(jìn) 行 。 剩 下 的 就 是 s-ice 的 技 術(shù) 活 了 , 經(jīng) 過 一 番 掙 扎 , ( 兩 天 ), 我 成 功 地 寫 出 了 自 己 的 解 碼 程 序 。
  下 面 簡 要 地 介 紹 一 下 該 文 件 格 式 。
  頭 三 個(gè) 字 節(jié) 為 48h 48h 01h, 應(yīng) 該 是 文 件 標(biāo) 識(shí) 符 (magic number), 我 才 疏 學(xué) 淺 , 不 知 道 這 是 什 么 格 式 的 文 件 標(biāo) 識(shí) 。
  后 面 35 byte 為 文 件 頭 ,
  03h 圖 象 寬
  05h 圖 象 高
  以 后 的 都 是 0
  圖 象 行 內(nèi) 采 用 游 碼 (run length) 壓 縮 , 行 間 游 碼 有 差 值 壓 縮。   38h 開 始 文 件 主 體 , 要 把 他 當(dāng) 作 一 個(gè) bit stream. 在 這 個(gè) bit stream 里 , 所 有 數(shù) 據(jù) 都 采 用 huffman 編 碼 。共 有 三 種 不 同 huffman 編 碼 。 全 部 都 硬 編 碼 在 程 序 中 ,沒 有 碼 表 可 查 。數(shù) 據(jù) 標(biāo) 識(shí) 的 huffman 樹 比 較 短 , 最 長 只 有 7 位 , 很 容 易 就 可 以 分 析 出 來 ? 怕 的 是 游 碼 的 所 有 數(shù) 據(jù) 采 用 兩 種 不 同 的 huffman 編 碼 ( 起 始 位 置 和終 止 位 置 采 用 不 同 的 編 碼 ) 最 大 碼 長 可 以 有 十 二 三 位 , 全 部 硬 編 碼 在 程 序 中 ,人 工 分 析 太 費(fèi) 時(shí) 間 了 , 不 值 得 。
  為 了 分 析 出 它 的 huffman 編 碼 , 我 只 好 編 了 一 個(gè) 反 編 譯 程 序 自 動(dòng) 跟 蹤 程 序 流 程 , 并 產(chǎn) 生 相 應(yīng) C 代 碼 , 好 在 程 序 里 的 huffman 解 碼 程 序 段 寫 得 比 較 規(guī) 范 , 因 此 我 的 反 編 譯 程 序 也 不 是 太 長 。
  更 詳 細(xì) 的 圖 象 解 碼 細(xì) 節(jié) , 大 家 可 以 參 考 我 的 原 碼 , 在 示 范 程 序 里 我 把 一 個(gè) 該 格 式 的 文 件 轉(zhuǎn) 為 了 GIF 格 式 。