OpenEXR 高動態範圍 (.exr)

Academy 標準

OpenEXR (EXR) 是一種專業的高動態範圍(HDR)圖片格式,用於電影與視覺特效工作流程。它支援 16 位元半浮點數與 32 位元浮點數畫素、多重通道以及圖層。

檢查與中繼資料

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 EXR 檔案:

在這裡選擇或拖放檔案

私密 - 檔案絕不會離開您的裝置

或貼上 Ctrl+V
零網路傳輸隱私保證: 0 位元組上傳至外部伺服器。所有處理皆在本機瀏覽器沙箱中進行。

位元組層級標頭簽章(檔案簽章)

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 EXR 檔案:

十六進位簽章(偏移量 0):

76 2F 31 01

ASCII 表示法: v/1.

標準化: Academy Software Foundation (ASWF) 開放標準

技術規格

容器架構可擴充的區塊式容器,支援任意通道、部分與深度資料圖層
壓縮PIZ(小波)、ZIP/ZIPS、RLE、B44/B44A、DWAA/DWAB(有損 DCT)以及未壓縮
位元組序小端序(Intel x86)
色彩空間線性 ACEScg, ACES2065-1, 線性 Rec.709, 任意色度座標
色版與結構任意通道名稱(R、G、B、A、Z 深度、法線、世界座標、動態向量、Cryptomatte)
最大尺寸實際上無限制(支援圖塊式深度縮放與數十億畫素的畫布邊界)
透明度完整的浮點數透明度通道與深度合成體積取樣陣列
串流與漸進式掃描線或圖塊式區塊串流,可實現快速的局部畫面讀取與代理算繪

技術比較矩陣:EXR 對比競爭格式

技術屬性EXR (目前)HDRTIFFPNG
動態範圍16 位元 half 與 32 位元 float 線性8 位元共用指數(RGBE)整數 8/16 位元或 32 位元 float標準 8 位元 / 16 位元整數
多通道算繪層無限的任意命名通道與部分僅限 RGB圖層支援有限僅限 RGBA
產業採用率廣泛應用於視覺特效與 3D 製片工作流程傳統 3D 打光 / 全景圖印前製版與攝影支援情形因軟體而異。
色彩管理原生整合 ACES 與 OpenColorIO臨時指定的 gamma / 線性ICC 設定檔標籤sRGB / ICC 標籤

常見損壞模式與十六進位修復指南

圖片顯示時完全偏暗,或出現大片過曝的死白區塊。

根本原因: 缺少線性到 sRGB 顯示轉換,或是指定了錯誤的 ACES 色彩空間。

修復: 在 File2File.app HDR 檢視器中套用 ACEScg 或線性到 sRGB 色調曲線轉換。

安全性分析與解析器攻擊向量

複雜的基於區塊(chunk)之 OpenEXR 解析器必須嚴格驗證通道定義與圖塊邊界,以預防記憶體安全問題。

已知攻擊向量

  • libopenexr 中的多通道緩衝區跨距(stride)計算發生整數溢位。
  • 在解壓縮 PIZ 或 DWAA 壓縮串流時發生堆積(heap)超出範圍讀取。
  • 透過深度巢狀的多部分區塊標頭遞迴造成阻斷服務。

防禦最佳實務: 使用記憶體安全的沙箱 WebAssembly 建置版本來解碼 EXR 檔案,並設定嚴格的圖塊尺寸限制。

歷史起源與里程碑

2020OpenEXR 3.0 在 Academy Software Foundation 下發布,實現多執行緒現代化。
2013OpenEXR 2.0 引入深度資料合成與多部分圖片結構。
2003工業光魔(Industrial Light & Magic)在《哈利波特》中使用 OpenEXR 後,以修改版的 BSD 授權條款將其開放原始碼。
1999由工業光魔工程師 Florian Kainz、Rod Bogart 和 Drew Hess 共同建立,旨在取代 8 位元的 Cineon/DPX。

主要優勢與優點

  • 原生支援 16 位元半浮點數(FP16)與 32 位元浮點數(FP32),可保留從直射陽光到黑暗陰影的極端明暗度。
  • 任意多通道架構將所有 3D 算繪通道(Beauty、Diffuse、Specular、Depth、Cryptomatte)封裝在單一檔案中。
  • DWAA 與 DWAB 是專為視覺上高效的圖片壓縮所設計的有損編解碼器;根據設定和內容的不同,視覺上的差異可能是微乎其微的或是顯而易見的。

技術限制與缺點

  • 儲存未壓縮的多圖層 4K/8K 32 位元算繪通道時,會產生龐大的檔案大小。
  • 在消費級軟體進行多通道解壓縮期間,會產生高 CPU 與記憶體負擔。
  • 需要色彩管理轉換(ACES 或 OCIO)才能在標準 sRGB 顯示器上正確呈現。

有趣的技術冷知識

  • 工業光魔專為 OpenEXR 格式發明了 16 位元「半」浮點資料類型。
  • 每個 EXR 檔案的前四個檔案簽章(magic bytes)為 0x76 0x2F 0x31 0x01,在 ASCII 中會轉譯為「v/1\x01」。
  • OpenEXR 支援「Deep Data」,單一像素可在透過半透明煙霧與雲霧的不同距離處,儲存多個顏色與深度取樣。

常見技術問題

為什麼有些視覺特效工作流程會使用 OpenEXR?

它能保留高精度 HDR 圖片資料,並支援合成工作流程中使用的多個通道、部分與深度資料。

EXR 中的半浮點數與浮點數有什麼區別?

半精度浮點數每個色彩通道使用 16 位元,在檔案大小僅為完整 32 位元浮點數一半的情況下,提供 30 格(stop)的動態範圍,使其成為美術算繪(beauty render)的產業首選。

如何將 EXR 轉換為標準的 PNG 或 JPG?

您可以直接在網頁瀏覽器中使用 File2File.app,將 EXR 檔案轉換為經過色調對應(tone-mapped)的 PNG 或 JPG 圖片。