Photoshop 如何解決超過記憶體空間大小的檔案

瞭解 Adobe 如何管理使用者,讓他在網頁版的知名 Photoshop 應用程式上,甚至能編輯最大的檔案。

簡介

(本文也會以影片的形式提供)。

2021 年,Adobe 與 Chrome 工程團隊共同購買了新版的 Photoshop 網路,該軟體透過 SIMD來源私人檔案系統的高效能儲存空間、畫布的 P3 色域,以及 Lit 的 Web 元件等功能,實現創新的 WebAssembly 應用方式。本文將著重說明 Adobe Photoshop 工程如何解決大於記憶體無法容納的大型檔案。就 WebAssembly 而言,Photoshop 也用於處理比 wasm32 超過 32 位元位址空間的檔案。

編輯 Project Fugu 標誌圖片的 Photoshop 應用程式。

問題

開啟檔案編輯需要大量記憶體,遠比開啟檔案檢視還要大。由於軟體提供多項功能、採用的數位設計和編輯類型,以及使用者裝置的功能,在 Photoshop 中編輯的檔案通常需要較多記憶體,而非使用者裝置可用的記憶體。

Photoshop 檔案格式會以無損壓縮的方式儲存資料。系統在讀取檔案或文件時,會解壓縮所有圖片資料,以便提升處理效率。因此,所需的記憶體容量可能會超過文件在磁碟或雲端儲存空間上使用的數倍。

Photoshop 支援非常大量的復原記錄。Photoshop 中的許多作業稱為破壞性作業。也就是說,如果使用筆刷進行編輯 (例如繪製),新的像素資料可能會和原始像素資料一樣大。若是長時間編輯,會產生大量像素資料,必須保留下來才能進行復原作業。因此,資料記錄可能會增加到數百 MB 或好幾 GB 的資料。

裝置和平台:無論是電腦、行動裝置或瀏覽器,都能管理記憶體。其中有些記憶體比其他動物還大,可以提供給應用程式使用。記憶體容量也會因裝置而異,因為您知道何時訂購新電腦或裝置,並指定所需的隨機存取記憶體 (RAM) 容量。這些平台中很多也支援虛擬記憶體,讓應用程式使用的記憶體超過實體可用。這項支援會因作業系統和執行階段而異,就如同 WebAssembly 的情況,應用程式可能無法輕易存取或使用。此外,現今的虛擬系統有上限,很容易超過 Photoshop 的規定。

在理想情況下,應用程式會視需要使用多少記憶體。一般來說,這有助於為使用者帶來最佳成效。不過,如果這些記憶體使用過多記憶體,執行階段可能會受到執行階段平台的處分,或記憶體不足,進而導致失敗。

過往的筆記是,Photoshop 必須先在 macOS 早期編輯列印解析度檔案,作業系統和所有應用程式的解析度最低只需 1 MB,才能解決。CMYK 中的 300 dpi 完整頁面圖片約為 32 MB 未壓縮時的檔案大小。

解決方案

為瞭解決應用程式超過可用 RAM 容量的問題,Photoshop 採用了軟體虛擬記憶體系統 (VM)。Photoshop 使用其 VM 管理文件資料,特別是圖片資料、所有復原記錄和狀態,以及目前指令的工作儲存空間。也可用於快取大型資料區塊 (例如筆刷說明),這樣系統只需要從磁碟序列化一次。

為了舉例說明 VM 管理的其中一個面向,系統會使用 mipmap 表示法儲存影像資料。此表示法是由一組金字形圖塊所組成,可提供低至高解析度的圖片資料。這可讓 Photoshop 對放大或檢視預覽畫面,採用適當的解析度資料,以便更快做出回應。

mipmap 圖片儲存空間範例:左側的主體圖片附有縮減尺寸的篩選副本。

在應用程式初始化期間,Photoshop 會決定可用的 RAM 容量。這會設定一部分資料,以便將資料儲存在 VM 中。透過標準 C++ 執行階段程式庫,則可使用剩餘的 RAM,滿足其他應用程式的需求。VM 記憶體分成數個「頁面」。每個網頁通常都是裝置硬體頁面大小的倍數。用於圖像資料時,記憶體是以圖塊的形式參照。圖塊是單一圖層的像素面積,包括幾何圖形邊界。資訊方塊會耗用一或多個頁面。

Photoshop 會建立一或多個暫存檔案,為 VM 頁面提供磁碟型備份。這些暫存檔案儲存在原始私人檔案系統中。螢幕截圖顯示在圖片編輯工作階段中,這類暫存檔案 (以黃色標明) 和其他檔案的完整檔案階層。每個暫存檔案可包含多個 VM 頁面。當 VM 需要更多備份功能時,就會建立額外的暫存檔案。頁面釋出後,您可以在新頁面重複使用暫存檔案的空間。

使用 OPFS Explorer Chrome 擴充功能檢查 Photoshop 的來源私人檔案系統檔案階層。

處理圖片資料時,Photoshop 會反覆疊代圖塊,執行像素計算。每項計算作業都可以參照多個圖塊。VM 負責確保目前疊代的來源和目的地圖塊位於記憶體中,並視需要從暫存檔案載入。也可以將分頁排清至暫存檔案,騰出空間。

結論

雖然 VM 的具體實作細節可能不在本文件的討論範圍內 (且為 Adobe,也專屬於 Adobe),但概略說明解決方案,我們已引導您瞭解 Photoshop 如何處理大型檔案。原始私人檔案系統具備高效能的檔案讀取與寫入權限,是解決方案的重要元件。

特別銘謝

這篇網誌文章皆經過 Oliver Unter Ecker 和 Rachel Andrew 所撰寫。在此特別感謝 Russell Williams 針對 Photoshop VM 上的優質說明文件。