文字轉 ASCII 藝術產生器(TAAG)是一個本機瀏覽器工具,使用 WCAG 2.2 相對亮度公式 0.2126 R + 0.7152 G + 0.0722 B,將解碼後的 JPG、PNG 或 WebP 影像轉換為有邊界的等寬字元格網。每一個像素在每個輸出儲存格中取樣一次,對應到所選序列中的一個可列印字元,並組合成以換行分隔的列,可以複製到剪貼簿或儲存為 UTF-8 純文字檔。完整的轉換過程——解碼、像素取樣、亮度計算、字元對應與文字組裝——都在目前的分頁中執行。原始影像的所有內容都不會離開裝置:沒有上傳、不需要帳號,也沒有遠端佇列。可接受最大 15 MB 的檔案,工具會根據來源長寬比計算列數,再套用高度修正,避免正方形影像在等寬預覽中出現垂直拉長的情形。輸出結果適合用於個人檔案文字、程式碼註解、終端機風格設計、輕量級創意實驗,以及任何需要呈現可辨識形狀、但不必嵌入原始圖片的情境。

在瀏覽器中以影像為基礎的 ASCII 轉換
TAAG 這個詞最初指的是一款受歡迎的網頁工具,使用 FIGlet 風格的字型將純文字轉成 ASCII 標幟。本文介紹的這款瀏覽器工具沿用相同命名,但應用於不同的任務:它不是用小符號拼出字母,而是將解碼後的點陣影像轉換為由可列印字元組成的格網。每個輸出儲存格對應一個取樣像素,而填入該儲存格的字元,則依據來源像素的相對亮度來決定。接近黑色的像素會對應到視覺上較重的符號,例如 "@" 或 "#";接近白色的像素則對應到空格或細小記號,例如 "."。最終結果是一個完全由鍵盤字元構成、仍可辨識的形狀。
這個方法與文字轉 ASCII 標幟工具有本質上的差異。輸出不是對輸入字母所做的字型描繪,而是對圖片資料的取樣詮釋。在決定選用哪種工具時,這項區別相當重要。TAAG 風格的標幟工具回答的是「我的姓名縮寫做成 ASCII 藝術會是什麼樣子?」——而這個工具回答的是「我的影像簡化為文字後會是什麼樣子?」兩者都很有用,也都受限於等寬字型的限制,但它們處理的輸入不同,產出的輸出類型也不同。
支援的影像格式、檔案大小與像素限制
此工具接受三種影像格式:JPEG、PNG 和 WebP。瀏覽器會在解碼前拒絕其他類型,因此不支援的格式會快速失敗並顯示明確錯誤,而不會產生毀損的結果。每個被接受的檔案必須小於或等於 15 MB。這個限制會在解碼前強制執行,也就是說 15 MB 以上的檔案會直接被拒絕,瀏覽器不需要為了處理它而配置記憶體。
影像解碼後,會套用另一個獨立的尺寸檢查。如果解碼後的影像超過 40 百萬像素,工具會要求使用更小的來源或裁切過的版本,再繪製到畫布上。由於百萬像素規則只能在讀取尺寸後才能強制執行,因此無法保證一個檔案小但壓縮率極高的影像一定能符合每台裝置的記憶體限制。在資源有限的裝置上,關閉其他佔用大量記憶體的分頁,或從較小的來源開始,都有助於轉換順利完成而不會卡住。
支援的檔案類型還有另一項值得了解的行為。透明像素——這是 PNG 原生支援的特性——會在計算亮度前先與白色背景進行合成。如果不做這一步,透明區域內那些不可見的黑色值,會在 ASCII 輸出中轉譯為深色記號。與白色合成這項操作,和任何影像編輯軟體在將透明圖層壓平到白色文件時所做的事情相同。
| 格式 | 最大檔案大小 | 解碼後像素上限 | 透明行為 |
|---|---|---|---|
| JPEG | 15 MB | 40 megapixels | No alpha channel |
| PNG | 15 MB | 40 megapixels | Composited over white |
| WebP | 15 MB | 40 megapixels | Composited over white |
如何逐步將影像轉成 ASCII 藝術
- 在使用中的瀏覽器分頁開啟 文字轉 ASCII 藝術產生器,並選擇一個本機 JPG、PNG 或 WebP 檔案。檔案選擇器只接受這三種支援的類型;請等待工具顯示解碼後的影像尺寸後再繼續。
- 設定字元寬度——也就是輸出將包含的等寬文字欄數。預覽時可從接近 80 欄開始,需要更細緻的細節時調高,需要更窄的個人檔案風格行寬時調低。
- 選擇密度組合:Standard(標準)適合平衡的色調覆蓋,Detailed(詳細)提供更多的亮度階數,Simple(簡單)則以較少的符號產生更醒目的結果。除非目標背景是深色,否則請關閉 Reverse(反轉)。
- 點擊產生動作並檢視等寬預覽。確認主體區域可辨識,且斷行位置符合預期。
- 將精確的文字複製到剪貼簿,或下載以來源影像命名的 UTF-8 純文字檔。可以在任何文字編輯器中開啟下載的檔案,或直接貼到目標位置。
密度組合、字元寬度與反轉模式
提供三種密度組合。Standard 提供平衡的字元序列,適用於大多數主題。Detailed 提供更多的色調階數,當來源是照片且目標是在明暗之間產生更平滑的漸層時特別有用。Simple 使用較少的符號,能產生更醒目、更具圖形感的效果——適合線條藝術、標誌和較窄的貼上目標。如需深入了解這些設定,文字轉 ASCII 藝術產生器設定指南有更詳細的說明。
字元寬度設定控制的是輸出欄數,而非來源像素數。較大的值能保留更多細節,但會產生更長的行和更大的文字檔總量。較小的值則會產生更精簡的結果,適合較窄的版面配置。工具會根據來源長寬比計算列數,並套用高度修正,因為等寬字元的高度大於寬度。若不做這項修正,正方形圖片在轉換後會看起來垂直拉長。
如果所要求的寬度會產生超過 800 列或 100,000 個字元,工具會要求縮小寬度或使用裁切後的來源,而不會產生不切實際的一大段文字。Reverse 會反轉明暗方向——視覺上較重的字元代表較亮的區域,細記號或空格則代表較暗的區域。Reverse 在目標是保留空格的深色背景時最為實用,例如深色主題的程式碼區塊或終端機視窗。
| 密度組合 | 色調階數 | 最適用於 |
|---|---|---|
| Standard | Balanced | General use, profiles, comments |
| Detailed | More | Photographic sources, smooth gradients |
| Simple | Fewer | Logos, line art, narrow layouts |
亮度如何將像素對應到字元
每個輸出儲存格會接收一個取樣像素。該像素的紅、綠、藍通道——透明區域會先與白色合成——會從 sRGB 進行線性化,再結合成一個相對亮度值。依據 WCAG 2.2,亮度以 0.2126 R + 0.7152 G + 0.0722 B 計算,其中 R、G、B 為線性化後的通道值。亮度值會從所選的密度序列中挑選一個字元:低亮度選擇較重的字元,高亮度選擇空格或細記號。
計算範例——像素 RGB (128, 64, 200) 的亮度:
每個通道會歸一化為 0 到 1:R = 128/255 ≈ 0.502,G = 64/255 ≈ 0.251,B = 200/255 ≈ 0.784。由於三個值都超過 sRGB 門檻 0.04045,因此套用傳輸函式 ((c + 0.055)/1.055)^2.4:
- R 線性 ≈ 0.216
- G 線性 ≈ 0.051
- B 線性 ≈ 0.577
亮度 = 0.2126 × 0.216 + 0.7152 × 0.051 + 0.0722 × 0.577 = 0.0459 + 0.0365 + 0.0417 ≈ 0.124
亮度 0.124 在 0 到 1 的刻度上位於偏暗端,因此對應的儲存格會依據所選的密度組合,收到一個視覺上較重的字元,例如 "@" 或 "#"。相同的數值加權會套用於每一個取樣像素,包括透明 PNG 中與白色合成後的像素。
ASCII 輸出最適合用在哪些地方
純文字輸出在預設就以等寬字型呈現的目的地中最為實用。聊天平台上的程式碼區塊、README 檔案、GitHub gist,以及深色主題的終端機視窗,都能完整保留工具所產生的對齊。將輸入包在預先格式化區塊中的個人檔案文字欄位同樣效果良好。只要目的地能保留空格並使用等寬字型,輸出就能如預期般呈現。
同樣的輸出在某些目的地可能就沒那麼乾淨,例如使用比例字型、會合併重複空格、或採用不同行高的環境。比例字型會破壞等寬字型所提供的欄對齊;空格被合併會讓背景區域變成一整塊字元;行高被改變則會使列對齊錯位。遇到這類目的地時,請將文字貼到程式碼區塊、預先格式化元素中,或以 .txt 檔附件方式下載。
貼上時最常見的問題是垂直拉長。工具會套用高度修正,補償等寬字元「高比寬大」的特性,但這項修正是基於一個典型的長寬比。如果目的字型有不同的寬高比,輸出在貼上後仍可能看起來被拉長或壓縮。空格是第二個常見問題——某些平台(包括特定的 Markdown 渲染器、社群網路和聊天客戶端)會將連續空格合併成單一空格。由於輸出在最亮的區域使用空格,被合併後原本可辨識的形狀會變成帶有細縫的深色塊。行高是第三個問題:與等寬預覽不同的行高可能導致列與列重疊或分離得比預期更多。
在實際主題方面,簡單的線條藝術、肖像與標誌都能轉換得很好。照片在目的地夠寬、能容納 100 欄以上結果的情況下,轉換效果還算可以接受;同樣的照片若只有 40 欄,則會變成低細節的抽象圖像。這個工具無法取代嵌入原始圖片——ASCII 轉換是一種詮釋而非無失真的影像格式,精細的紋理、精確的色彩以及可閱讀的小字文字都無法在轉換中保留。
Local Processing, Clipboard Copy, and TXT Download
所有轉換步驟都在當前的瀏覽器分頁中執行。影像會在本機解碼、繪製到一個小型取樣畫布上,並以像素形式讀取,整個過程不會上傳到任何影像服務。無需帳號,也不會在遠端伺服器端複製檔案。這項隱私特性是自動生效的,無需手動啟用,這讓此工具既適合一般私人草稿,也適合處理不應外流的製作中影像。
Copy 會將精確產生的文字放入剪貼簿。Download TXT 則會建立一個以來源影像命名的 UTF-8 純文字檔。下載的檔案僅包含產生的字元列,因此可以在任何文字編輯器中開啟,或作為另一個本機工作流程的輸入使用。這兩種輸出方式產生的文字完全相同;差別在於文字是需要立即貼上,還是用於儲存以便日後使用。
驅動此轉換的瀏覽器 API 皆有公開說明文件。createImageBitmap 負責解碼步驟,而 CanvasRenderingContext2D.getImageData 提供用於填入取樣網格的像素讀取功能。兩者都是穩定的網頁平台功能,皆不需要外掛程式或擴充功能。
如需更深入的說明,請參閱 Base64 to Image Explained: From Text to a Real File。