若要在 C# 中將 Base64 轉換為圖片,您可以使用 Convert.FromBase64String 將編碼後的字串解碼為原始位元組,再將這些位元組寫入 FileStream,或載入到 Image 或 Bitmap 物件中。基於瀏覽器的 Base64 to Image Converter 執行的是同樣的概念性工作——將 Base64 字串轉成實際的圖片檔——而且完全不需要編譯、部署或執行任何 C# 程式碼。您可以直接貼上嚴格的 RFC 4648 Base64,或是帶有明確 ;base64 標記的 data URL,工具會從解碼後的檔案簽章偵測實際格式,透過瀏覽器的解碼器驗證這些位元組是否為真正的圖片,然後回傳一個可下載的 PNG、JPEG、GIF 或 WebP 檔案。當您已經在 C# 服務中產生 Base64,卻想在不建立測試環境、附加除錯器或啟動主控台應用程式的情況下檢查或交接結果時,這個瀏覽器的路徑特別有用。解碼、簽章偵測、驗證、預覽與下載全部都在您目前開啟的瀏覽器分頁中完成,因此圖片位元組從不離開您的電腦。下載的檔案會完整保留原始解碼後的位元組,這代表 alpha 通道、嵌入的 PNG chunk,以及 GIF 動畫都能原封不動地保留。

比編譯 C# 程式碼更快的路徑
在 C# 中處理 Base64 轉圖片的程式碼路徑在紙面上很直接,但實際執行起來卻很緩慢。您需要一個專案、正確的命名空間(在 .NET 5+ 中為 System.Drawing 或 System.Drawing.Common)、目標 framework、可在 Linux 上支援圖片解碼的執行階段,以及寫入磁碟的權限。當您只想查看 API 回應、JSON 欄位、電子郵件範本或開發日誌剛才以文字形式交給您的內容時,這種建置與執行的循環就會成為阻礙。基於瀏覽器的轉換器則完全移除了整個工具鏈。您貼上編碼後的資料,解碼器會驗證 Base64 字元集,格式偵測器會讀取解碼後位元組中的實際檔案簽章,瀏覽器自身的圖片解碼器則會確認結果是具有正數寬度與高度的真實、可解碼圖片。接著輸出檔案會以正確的副檔名提供下載,該副檔名是依據位元組實際承載的結構推導出來,而不是依據生產端所聲稱的任何 MIME 類型。
對 C# 開發者來說,這是一種除錯輔助工具,而不是取代方案。在正式環境的程式碼中,您仍然需要 Convert.FromBase64String 與 File.WriteAllBytes。但對於臨時的檢查、復原與交接已編碼資料的工作,瀏覽器的路徑可以跳過重新建置、NuGet 還原,以及跨平台圖片函式庫的取捨。如果您需要反向操作——將圖片轉成 Base64 字串以嵌入 C# 承載資料——配套的 Image to Base64 Converter 會為相同的工作流程產生符合 RFC 4648 規範的輸出。
三步驟將 Base64 轉換為圖片
- 貼上嚴格的 Base64 或 data URL。貼上一段使用標準字元集(A–Z、a–z、0–9、加號、斜線)的純 Base64 承載資料,其長度必須可被四整除,並且僅在需要時於末端放置一個或兩個填補字元。如果您的字串是 data URL,請包含一個逗號分隔符以及恰好一個末端 ;base64 標記,例如 data:image/png;base64,iVBORw0KG…。空白字元、換行、URL 安全字元(減號與底線),以及缺少的填補都會產生明確的錯誤,而不是默默地被改寫。
- 轉換並檢查已驗證的預覽。選擇轉換動作。解碼器會在配置位元組陣列之前先計算預期的輸出大小,根據偵測到的格式驗證容器結構,然後要求瀏覽器解碼產生的 Blob。預覽會顯示真實的解碼資源,而摘要會回報偵測到的格式、以像素為單位的解碼後尺寸,以及解碼後的位元組大小。如果宣告的 MIME 類型與實際的檔案簽章不一致,宣告的值會顯示為已忽略,並以真實格式為準。
- 下載原始的解碼後位元組。點擊下載動作。您收到的檔案會使用依據已驗證檔案簽章所推導的副檔名——.png、.jpg、.gif 或 .webp——而不是依據宣告的 data URL MIME。位元組是原始的解碼後承載資料,未經 canvas 處理、重新壓縮、調整大小或移除中繼資料。
格式偵測的運作方式
此轉換器將 Base64 視為位元組編碼,而非可信賴的檔案標籤。解碼後,它會檢查所產生緩衝區的前導位元組,並執行結構性的預檢,以比對位元組實際承載的格式。data URL 可能宣告 image/jpeg,但實際上卻包含 PNG 位元組;在這種情況下,宣告的 MIME 會顯示為已忽略,由 PNG 結構勝出,瀏覽器會將這些位元組驗證為圖片,而下載的檔案會得到 .png 副檔名。這樣的選擇能避免產生副檔名是從不可信中繼資料複製而來的誤導性檔案。
| 格式 | 必要簽章或標記 | 輸出副檔名 |
|---|---|---|
| PNG | 八位元組簽章,外加完整的 IHDR chunk(具備其規定的長度)以及末端的 IEND 邊界 | .png |
| JPEG | 影像起始標記、緊接其後的標記,以及末端的影像結束位元組 | .jpg |
| GIF | GIF87a 或 GIF89a 簽章、足夠位元組構成的邏輯螢幕描述子,以及串流結尾位元組 | .gif |
| WebP | RIFF 與 WEBP 標記、精確的 RIFF 位元組計數,以及有界的 VP8、VP8L 或 VP8X 第一個 chunk | .webp |
這些結構性檢查會拒絕裸式或被截斷的魔術位元組,但它們無法取代真正的圖片解碼。在任何預覽或下載發佈之前,瀏覽器還必須成功解碼完整的 Blob,並回報正數的寬度與高度——這是根據 W3C PNG 規格、W3C GIF89a 規格、ITU-T T.81 JPEG 標準,以及 Google 的 WebP RIFF 容器文件所定義的格式要求。因此,通過預檢但卻在瀏覽器解碼器中失敗的容器,依然會被判為失敗,而不會顯示為成功的轉換。
工具強制執行的輸入規則與硬性限制
Base64 驗證刻意保持嚴格且具決定性。輸入必須使用標準的 RFC 4648 字元集、長度必須可被四整除、僅在需要時於末端放置一個或兩個填補字元,並且不得有任何未使用的填補位元。空白字元不會被移除。換行的 Base64、空格、Tab 字元、URL 安全的減號與底線字元、缺少的填補、多餘的填補,以及非標準的填補位元,全部都會產生明確的錯誤。當您正在檢查生產端是否產生了符合規範的傳輸資料時,這種嚴格性非常重要——而 RFC 4648 Base-N Encodings 規格就是這些規則的來源。如果您的來源提供的是經換行的 MIME Base64 或 Base64url,請先在來源端或使用專門的文字工具將其標準化;本轉換器不會默默地改寫輸入內容。
data URL 必須包含一個逗號分隔符以及恰好一個末端 ;base64 標記。媒體類型必須使用 type/subtype 語法,置於 ;base64 之前的參數必須使用 name=value 語法。重複的 base64 標記、置於 base64 標記之後的參數、經百分號編碼的承載資料,以及非 Base64 的 data URL 皆超出處理範圍。語法上有效但內容不實的宣告 MIME 類型,僅會被視為不可信的中繼資料顯示,永遠不會用於決定輸出。純 Base64 不需要前置字串。
硬性大小限制會預先顯示。輸入上限為 8,000,000 個 UTF-16 程式碼單位。解碼後的位元組上限為 5 MiB,相當於 5,242,880 位元組。解碼器會在配置位元組陣列之前計算預期的輸出大小,接受精確的邊界值,並拒絕超出該值一個位元組以上的輸入;它絕不會對過大的輸入進行切片、縮短、取樣或部分解碼。經瀏覽器解碼後,寬度與高度各自不得超過 20,000 像素,且兩者的乘積不得超過 40,000,000 像素。這些解碼後尺寸限制是為了保護瀏覽器的記憶體,因為一個體積小的編碼檔案仍然可能展開為很大的像素面積。
您可能會看到的錯誤及其意義
此工具能區分空輸入、超過字元數上限的輸入、非法空白字元、格式錯誤的 data URL、無效的字元集或填補、非零的未使用填補位元、超過位元組上限的解碼資料、無法辨識或結構不完整的容器、無法由瀏覽器解碼的損壞圖片,以及過大的解碼後尺寸。在回報失敗之前,每條錯誤路徑都會先清除先前任何成功的預覽與下載,因此您絕不會在紅色錯誤旁邊看到一個過時的綠色勾號。編輯輸入會立即移除先前的預覽、下載、狀態、錯誤與忙碌狀態。開始另一次轉換時,會在執行新工作之前先撤銷舊的 ObjectURL,且每次非同步解碼都會帶有一個世代編號,使較舊文字所產生的延遲結果無法取代目前的狀態。暫時性的 ObjectURL 會在被取代時、驗證失敗後,以及元件卸載時被撤銷。
轉換作業會保留解碼後的位元組。此工具不會繪製到 canvas、不會調整大小、不會重新壓縮、不會重新上色、不會壓平透明度,也不會刻意移除中繼資料。因此下載的 GIF 能保留動畫,PNG 則能保留來源中存在的 alpha 與嵌入 chunk。預覽行為取決於目前瀏覽器的圖片解碼器,而中繼資料的顯示則不在處理範圍內。由於原始位元組會被保留,本工具無法修復損壞的檔案、無法最佳化檔案大小、無法變更格式,也無法保證其他所有應用程式都能接受其結果。如果預覽成功但您需要較小的檔案,請先下載後再透過 Image Compressor 處理。如果您需要不同的尺寸,請使用 Image Resizer。如果您需要檢查或轉換任意的文字 Base64 而非圖片,請改用專用的文字編碼器。這種專注的分工讓圖片工作流程得以保持可預測性,同時精確保留原始的圖片位元組。
若想深入了解,請參閱 Convert Base64 to Image in JavaScript Without Writing Code。
若想深入了解,請參閱 Decode a Base64 Image from an n8n Workflow。