圖片和照片 · 瀏覽器圖片和繪圖編輯器
為什麼在瀏覽器中編輯 12 百萬像素的照片需要大約 48 MB
· 工作原理
圖片編輯 帆布 瀏覽器處理
3 MB JPEG 在解碼時會變成數十兆位元組,因為每個像素在記憶體中需要四個位元組。這篇文章解釋了演演算法,為什麼瀏覽器工具受到裝置記憶體而不是上傳上限的限制,以及檔案太大時該怎麼辦。
照片打開緩慢或根本無法打開——瀏覽器編輯器在大型相機檔案上停滯的問題
壓縮的兆位元組不能預測解碼的編輯足跡。從開啟緩慢或根本無法開啟的照片開始:這是瀏覽器編輯器在大型相機檔案上停滯的實際問題。對於此記憶體計算,實施的規則是 RGBA 快照估計每個像素使用 4 個位元組,因此在工作副本之前,1,200 萬像素需要 48,000,000 位元組用於一個點陣圖。輸入檔的上限為 40 MB,而解碼尺寸獨立限制為每邊 8,192 個以及裝置像素預算。
將寬度乘以高度四以獲得一份 RGBA 副本,然後將來源與開啟後報告的縮小尺寸進行比較。預設預算為 33,177,600 像素,iOS 路徑使用 16,777,216;超大來源會在發出通知後減少。工作畫布和歷史記錄可以添加副本,因此這是一個基線,而不是總的分頁記憶體承諾。
檔案大小與解碼大小 - 為什麼壓縮使檔案變小但編輯器必須處理每個未壓縮的像素
壓縮的兆位元組不能預測解碼的編輯足跡。將檔案大小與解碼大小分開:壓縮使 JPEG 在磁碟上變小,但編輯器必須處理每個未壓縮的像素。對於此記憶體計算,實施的規則是輸入檔案的上限為 40 MB,而解碼的尺寸獨立限制為每側 8,192 和裝置像素預算。預設預算為 33,177,600 像素,iOS 路徑使用 16,777,216;超大來源會按比例減少,並發出通知。
將寬度乘以高度四以獲得一份 RGBA 副本,然後將來源與縮小後的尺寸進行比較。撤銷最多保留 40 個步驟和大約 96 MiB,逐出最舊的條目,同時保持一個超大操作不可撤銷。工作畫布會新增副本,因此單位圖圖形只是基準。
每個像素四個位元組:算術 — 寬度 × 高度 × RGBA 為 12 百萬像素提供 48 MB,對於工作副本則提供更多
壓縮的兆位元組不能預測解碼的編輯足跡。關鍵算術是每個像素四個位元組:寬度乘以高度,RGBA 在任何工作副本之前為 1200 萬像素提供 48 MB。對於此記憶體計算,實現的規則是預設預算為 33,177,600 像素,iOS 路徑使用 16,777,216;超大來源會按比例減少,並發出通知。撤銷最多保留 40 個步驟和大約 96 MiB,逐出最舊的條目,同時保持一個超大操作不可撤銷。
將寬度乘以高度四以獲得一份 RGBA 副本,然後將來源與縮小後的尺寸進行比較。 RGBA 快照估計每個像素使用 4 個位元組,因此 1200 萬像素在工作副本之前需要 48,000,000 位元組。工作畫布和歷史記錄會新增副本,因此單位圖圖形是基準。
限制來自哪裡——瀏覽器畫布尺寸上限、每個分頁內存以及手機和桌面之間的差異
壓縮的兆位元組不能預測解碼的編輯足跡。限制來自幾個地方:瀏覽器畫布尺寸、每個分頁內存以及手機和桌面之間的差異。對於此記憶體計算,實施的規則是撤銷最多保留四十個步驟和大約 96 MiB,逐出最舊的條目,同時保持一個超大操作不可撤銷。 RGBA 快照估計每個像素使用 4 個位元組,因此在工作副本之前,一個點陣圖需要 12 百萬像素 48,000,000 位元組。
將寬度乘以高度四以獲得一份 RGBA 副本,然後將來源與縮小後的尺寸進行比較。輸入檔的上限為 40 MB,而解碼尺寸則獨立限制為每邊 8,192 和裝置像素預算。工作畫布和歷史記錄會新增副本,因此單位圖圖形是基準。
實施的限制是像素和尺寸預算,而不是猜測的每個分頁記憶體總量
壓縮的兆位元組不能預測解碼的編輯足跡。本地模型意味著裝置內存,而不是伺服器端圖片處理池,是實際的上限。對於此記憶體計算,實施的規則是 RGBA 快照估計每個像素使用 4 個位元組,因此在工作副本之前,1,200 萬像素需要 48,000,000 位元組用於一個點陣圖。輸入檔的上限為 40 MB,而解碼尺寸獨立限制為每邊 8,192 個以及裝置像素預算。
將寬度乘以高度四以獲得一份 RGBA 副本,然後將來源與縮小後的尺寸進行比較。預設預算為 33,177,600 像素,iOS 路徑使用 16,777,216;超大來源會在發出通知後減少。工作畫布和歷史添加副本,因此這是基線。
即使沒有發生映像上傳,檔案輸入也具有 40 MB 驗證上限
壓縮的兆位元組不能預測解碼的編輯足跡。考慮一張 6000×4000 照片:一張完整的 RGBA 副本在裝置安裝、歷史記錄或其他畫布之前佔 96,000,000 位元組。對於此記憶體計算,實施的規則是輸入檔案的上限為 40 MB,而解碼的尺寸獨立限制為每側 8,192 和裝置像素預算。預設預算為 33,177,600 像素,iOS 路徑使用 16,777,216;超大來源會按比例減少,並發出通知。
將寬度乘以高度四以獲得一份 RGBA 副本,然後將來源與縮小後的尺寸進行比較。撤銷最多保留 40 個步驟和大約 96 MiB,逐出最舊的條目,同時保持一個超大操作不可撤銷。工作畫布添加副本,因此這是基線。
工作範例:在裝置安裝之前,6000×4000 來源需要每個 RGBA 副本 96,000,000 位元組
壓縮的兆位元組不能預測解碼的編輯足跡。這不包括每個瀏覽器的確切限制(版本之間會發生變化)或 RAW 和 HDR 格式的記憶體行為。對於此記憶體計算,實現的規則是預設預算為 33,177,600 像素,iOS 路徑使用 16,777,216;超大來源會按比例減少,並發出通知。撤銷最多保留 40 個步驟和大約 96 MiB,逐出最舊的條目,同時保持一個超大操作不可撤銷。
將寬度乘以高度四以獲得一份 RGBA 副本,然後將來源與縮小後的尺寸進行比較。 RGBA 快照估計每個像素使用 4 個位元組,因此 1200 萬像素在工作副本之前需要 48,000,000 位元組。工作畫布和歷史添加副本,因此這是基線。
重點:了解算術,然後進行編輯 - 瀏覽器圖片和繪圖編輯器如何在本地處理大檔案以及裝置執行不足時該怎麼辦
壓縮兆位元組不能預測解碼的編輯足跡。重點是在編輯之前了解演演算法:瀏覽器圖片和繪圖編輯器可以在本地處理大型檔案,但裝置仍然可能運作不足。對於此記憶體計算,實施的規則是撤銷最多保留四十個步驟和大約 96 MiB,逐出最舊的條目,同時保持一個超大操作不可撤銷。 RGBA 快照估計每個像素使用 4 個位元組,因此在工作副本之前,一個點陣圖需要 12 百萬像素 48,000,000 位元組。
將寬度乘以高度四以獲得一份 RGBA 副本,然後將來源與縮小的尺寸進行比較。輸入檔的上限為 40 MB,而解碼尺寸則獨立限制為每邊 8,192 和裝置像素預算。工作畫布和歷史添加副本,因此這是基線。