Screenshot PDF
返回部落格

長截圖的 Canvas 記憶體預算:為何不同裝置上限不同

發布於: 2026-08-08審核於: 2026-08-08Screenshot PDF 編輯團隊
長截圖的 Canvas 記憶體預算:為何不同裝置上限不同

1,000 × 20,000 的螢幕截圖包含 2000 萬像素。在未壓縮的 RGBA Canvas 中,在計算臨時畫布、解碼的來源影像、撤銷快照、PDF 資料和瀏覽器開銷之前,僅原始像素緩衝區就大約有 8,000 萬位元組。因此,磁碟上的檔案大小是編輯記憶體的一個糟糕的估計。

螢幕截圖 PDF 版本 0.0.13 使用裝置感知像素和歷史預算來減少記憶體較低的系統上的崩潰,同時在功能較強的裝置上保留更多細節和撤銷容量。本文解釋了這些當前值以及使用者可以應用於任何基於瀏覽器的圖像工作流程的推理。

驅動 Canvas 成本的是像素,而不是壓縮的兆位元組

PNG 和 JPEG 壓縮重複或可預測的視覺訊息。 4 MB PNG 在解碼後可以擴展到更大的像素緩衝區。螢幕截圖的第一個計算是:

pixel area = width × height

粗略的緩衝區下限估計是:

RGBA bytes = width × height × 4

在 3,200 萬像素時,一個原始緩衝區約為 128 MB。瀏覽器操作可以同時暫時儲存解碼的影像、目標畫布、裁切的畫布、預覽和撤銷狀態。實際記憶體使用取決於實作和瀏覽器,因此該公式是規劃指導而不是承諾。

Screenshot PDF 目前採用的像素預算

編輯器會讀取瀏覽器的 navigator.deviceMemory 提示(如果可用),否則假定保守的中間值。其畫布像素限制為:

|報告的裝置記憶體 |畫布像素預算| | --- | ---: | | 2 GB 或更少 | 20,000,000 | |高達 4 GB | 32,000,000 | 32,000,000 |高達 8 GB | 48,000,000 | |超過 8 GB | 64,000,000 | 64,000,000

瀏覽器值是粗略的並且不普遍可用。它不應被解釋為對可用 RAM 的精確測量。預算是一個護欄,而不是基準分數。

適用於低、中和高記憶體裝置的自適應 Canvas 預算。

超大圖像如何縮放

當上傳的影像超出選取的像素預算時,編輯器將使用允許面積比的平方根計算比例:

scale = √(pixel budget ÷ source pixel area)

寬度和高度都乘以該比例。這樣可以保留縱橫比,同時減少預算的總面積。例如,將兩個尺寸減半會將像素面積減少到四分之一。

縮放可以防止單一影像分配無界的畫布,但它也會減少來源細節。小介面文字和細線應在 PDF 預覽中進行 100% 檢查。如果它們變得難以閱讀,請將原始程式碼分成更窄或更短的部分,而不是重複提高壓縮品質。

註釋歷史有其自身的成本

撤銷快照可以複製大畫布。因此,螢幕截圖 PDF 會適應歷史深度:

  • 非常大的畫布或報告 2 GB 的裝置保留兩個快照;
  • 超過 1,200 萬像素的畫布或高達 4 GB 的裝置保留三個;
  • 典型的中檔案例保留四個;
  • 報告至少 8 GB 的裝置最多可以保留 6 個。

當快照被逐出時,較舊的物件 URL 將被撤銷。這會限制保留的瀏覽器資源而不更改目前文件。使用者仍應匯出或儲存重要工作,而不是將撤銷歷史記錄視為持久性儲存。

尺寸可能會先於總面積而失效

除了總像素面積之外,瀏覽器和圖形後端可能還會施加最大畫布寬度或高度。螢幕截圖 PDF 的拼接路徑在區域預算之前套用單獨的最大尺寸。即使總面積看起來合理,極窄和極高的影像也可能達到尺寸邊界。

瀏覽器版本、GPU 配置、作業系統和可用記憶體都會影響實際行為。 MDN 的 Canvas 教學 描述了 API,但並未為每種環境提供一個通用的安全最大值。

記憶體壓力的症狀

  • 影像解碼但預覽仍為空白;
  • 畫佈建立返回不可用的上下文;
  • 瀏覽器標籤重新載入或變成無回應;
  • 由於快照很大,註釋變得很慢;
  • PDF 生成失敗,但原始影像仍顯示;
  • 瀏覽器報告記憶體不足或分配錯誤。

這些症狀不會自動表示檔案已損壞。使用較小的副本進行複製,關閉不相關的繁重選項卡,並記錄來源尺寸和設備上下文。

處理很長材料的更安全方法

  1. 捕獲具有可見重疊的命名部分。
  2. 縮小視口,排除不相關的側邊欄,但確保文字保持可讀。
  3. 在保留結構或元資料時,使用來源服務的官方匯出。
  4. 避免在最大尺寸的Canvas上進行不必要的重複編輯。
  5. 保留原始影像,直至 PDF 通過檢查。
  6. 在刪除任何中間文件之前,在第二個檢視器中開啟匯出的 PDF。

對於收據、研究或支持證據,分段文件可能比一張巨大的圖像更清晰。使用確定性名稱,例如 part-01part-02,並記錄重疊或斷面邊界。

可重複的容量報告

報告問題時,請包含來源寬度和高度、壓縮檔案大小、瀏覽器和擴充版本、報告的裝置記憶體層(如果可用)、嘗試的操作以及重現故障的最小尺寸。當合成影像可以表現出相同的分配行為時,請勿附加私人螢幕截圖。

自適應限制並不聲稱層中的每個設備都具有相同的行為。它們是細節、穩定性和撤消能力之間的明確權衡。了解像素數學可以幫助用戶在瀏覽器達到不可恢復的限制之前選擇更小、更清晰的捕獲。