影像轉 ASCII 轉換會將靜態影像中每個像素的亮度,對應到一組固定密度的可列印字元漸階上,產生一格一格的一般文字,從視覺上逼近原始影像。本機的 Image To Ascii 工具每次執行僅接受一個 PNG、JPEG、GIF 或 WebP 檔案,直接在瀏覽器中解碼點陣圖,將該靜態畫面縮放至預定輸出網格,每個預定字元取樣一筆相對亮度值,再將該值四捨五入到一組固定的十級漸階上,從 @ 開始依序遞減到較亮的符號,最後到空白。由於解碼、Canvas 縮放、RGBA 讀取、W3C 亮度計算、複製以及 TXT 下載等每個階段全部都在當前的瀏覽器分頁中完成,因此若要處理一整批影像,就得依序進行多次單張影像的執行,而不是一次性大量上傳。這裡沒有伺服器排隊,也沒有程式化的 API;每張影像各自獨立,每次轉換都受到明確的單次執行限制,包括編碼檔案大小、解碼後尺寸、輸出寬度以及總序列化字元數。本指南其餘部分將說明這種「每次一張影像」的設計,對手上有一整批來源檔案的使用者來說實際上代表什麼,列出在多張影像間重複執行的精確步驟,摘要可能讓執行中斷的限制,並展示如何讓多張影像間的輸出在視覺上保持一致。

image to ascii bulk multiple images
image to ascii bulk multiple images

這套工具中「多張影像」真正的意思

Image To Ascii 工具的單次執行只會接收一個來源檔,並只產生一個 TXT 檔。這裡沒有多檔拖放區、沒有排隊,也沒有資料夾批次匯入。因此關鍵字中的「大量」部分發生在工具之外:你自行決定檔案順序(依字母、日期、場景編號或任何其他規則),然後對每個檔案各執行一次工具。由於解碼、縮放、取樣和文字產生全部都在本機完成,每一次的執行通常在點陣圖載入記憶體後,不到一秒就能結束,所以 20 到 40 張尺寸中等的影像,通常只要在表單上點個幾分鐘就能處理完一整個資料夾。

人們想把整批影像轉成 ASCII 的常見理由包括:產生一份 ASCII 縮圖的連絡表、建立純文字的心情板、將短片中的影格轉成 ASCII 分鏡、準備能乾淨複製到程式碼區塊中的簡報素材,或為社群貼文製作一系列風格一致的輸出。這些動機都不需要在工具內部進行批次處理;它們需要的是在多次執行間一致地套用相同設定。

開始前先準備好影像資料夾

在為第一個檔案打開工具之前,請先根據工具強制執行的四項硬性限制檢查你的資料夾,避免後面的影像意外中斷整批作業。

首先是編碼後的檔案大小:你提交的每個 PNG、JPEG、GIF 或 WebP 在磁碟上必須是 15 MiB 以下。較大的檔案會在解碼前就被拒絕。

其次是解碼後的邊長:即使編碼後的檔案很小,完全解碼後的影像任一邊不得超過 8,192 像素。一張 4K 照片(3840×2160)沒問題;但一張解碼後長邊達 12,000 像素的高解析度手機全景照會被拒絕。

第三是解碼後的面積:總像素數最多只能是 24,000,000。一張 6000×4000 的照片(剛好 24,000,000 px)勉強通過;6500×4000 的照片就不行。

第四是輸出上限:即使尺寸合格,算上換行分隔符後,渲染出的 ASCII 必須保持在 50,000 字元以內。在較寬的寬度下,較高的影像可能會超過這個上限,工具會回報此情況而不會產生部分結果。

除了這些限制之外,請先決定整批影像要採灰階還是彩色。ASCII 輸出本身依設計就是單色的——只會對應亮度漸階——但一組彩色影像和另一組純黑白影像擺在一起時,看起來會很雜亂。如果你想要統一的視覺風格,請先用 Black and White Photo Converter for Multiple Images 工作流程將來源檔案預先標準化,再開始轉 ASCII。

批次轉換每一張影像

針對資料夾中的每張影像,重複相同的三步驟流程。一次成功執行所使用的設定,通常可以在下一張檔案上原封不動地重複使用。

  1. 打開 Image To Ascii 工具,並在可接受的編碼與解碼限制內選擇一個 PNG、JPEG、GIF 或 WebP 檔案。瀏覽器必須真的解碼該檔案才能進行轉換,光是副檔名相符是不夠的。若解碼成功,先前的任何 ASCII 結果都會被清除,並顯示該來源影像。
  2. 輸入一個介於 10 到 200 字元之間的整數輸出寬度。寬度必須是純整數——不接受符號、單位、空白、小數點、前導零形式或科學記號。介於 10 到 200 以外的寬度會被拒絕,而不是自動夾擠到範圍內。也可選擇性地開啟反向開關,將密度漸階反轉,讓亮部區域得到較密集的字元,暗部區域得到較稀疏的字元。
  3. 點擊 generate 產生完整的 ASCII 結果。輸出會出現在結果面板中;將可見的文字複製到剪貼簿,或下載一個僅包含 ASCII 字元和換行分隔符的本機 TXT 檔。編輯來源、寬度或漸階方向會撤銷任何先前的下載網址並清除前一次的結果,因此請在重新產生之前先規劃好編輯動作。

這三個步驟會針對批次中的每張檔案重複進行。

可能讓批次中途執行中斷的限制

每次執行都會被獨立驗證,第 17 張檔案失敗並不會影響第 18 張——但這代表你需要知道如何辨識失敗的情況,這樣有問題的檔案才不會留在你的「已完成」清單中。

編碼後與解碼後的大小。超過限制的編碼檔案會在上傳時就被拒絕,而超過限制的解碼後影像(任一邊超過 8,192 像素,或面積超過 24,000,000)會在瀏覽器嘗試解碼後失敗。這兩種失敗都會清除任何先前的 ASCII,也不會產生部分結果,因此失敗很容易辨識——因為什麼都不會顯示。

寬度解析。"100.0"、"1e2"、" 100 " 或 "+100" 這類非整數的寬度會被拒絕。寬度 9 與寬度 201 也會被拒絕。如果你從試算表貼上帶有小數尾數或百分比符號的寬度,必須修正後才能通過。

輸出總量上限。50,000 字元的限制是依 width × rows + (rows − 1) 個換行來計算,其中 rows 採用文件中說明的公式。在其他條件都有效的寬度下,較高的長寬比仍可能超過這個上限;工具會回報該限制並且不產生預覽或下載,這是唯一能在不自己算數學的情況下得知已超過上限的方法。

行列數與總字元數的計算範例。以一張 1200×800 的來源影像、輸出寬度 100 為例:

  • Rows = round(800 / 1200 × 100 × 0.5)
  • Rows = round(0.6667 × 50)
  • Rows = round(33.33) = 33
  • 總字元數 = 100 × 33 + 32 個換行 = 3,332 字元

這個數字輕鬆落在 50,000 上限以內。同樣的影像在寬度 200 下會產生 200 × 67 + 66 = 13,466 字元——一樣沒問題。相對地,一張 1000×2500、寬度 200 的較高影像,會得到 rows = round(2500/1000 × 200 × 0.5) = round(2.5 × 100) = 250,總計為 200 × 250 + 249 = 50,249 字元,這會觸發上限而不產生任何輸出。

讓批次在視覺上保持一致

由於每次執行都是獨立的,批次的一致性是一種你靠重複使用設定來強加的紀律。三個可控的參數是輸出寬度、漸階方向,以及你稍後把 TXT 貼進去的等寬字型。在檔案之間改動其中任何一項,都會讓整批看起來像東拼西湊的實驗,而不是一套連貫的成果。

寬度的選擇影響最大。較窄的寬度(10 到 40 字元)會給人一種微小、色彩被強力簡化的印象;較寬的寬度(150 到 200)能保留細部細節,但代價是 TXT 檔案更長,且更容易逼近 50,000 字元的上限。

輸出寬度典型用途1200×800 來源影像的大約輸出大小
10–40微型縮圖、留言區藝術約 30–550 字元
60–100社群貼文、投影片文字藝術約 1,200–3,400 字元
120–160詳細預覽、部落格頁首約 4,800–8,500 字元
180–200高保真文字、接近上限風險約 10,800–13,500 字元

實際數字會依來源影像的長寬比以及在列數計算中套用的 0.5 倍字元高度修正而有所不同,因此請把這些數字視為粗略指引,並讓工具實際的預覽來確認大小,再決定是否在批次其餘檔案上採用相同設定。

反向模式會反轉同一組十級漸階,進而翻轉明暗的對應關係:暗部來源區域現在會渲染成稀疏字元,亮部區域則渲染成密集字元。請一次選定方向後,在整個批次中保持不變——在途中切換會在不更動原始影像的情況下,翻轉整組作品的氛圍。

什麼時候該選擇真正的批次處理器

如果你的資料夾中有上百個檔案,點擊每張影像本身會成為瓶頸,而不是渲染速度。Image To Ascii 工具沒有命令列介面、沒有 watch-folder,也沒有 API,因此對於真正自動化或無人看管的批次工作,你會需要不同類型的工具——通常是 Node、Python 或 shell 腳本流程,會讀取目錄、對每個檔案呼叫 image-to-ASCII 程式,並對每個檔案輸出一個 TXT。這類流程適合的場景是大型自動化,而不是一次性、本機的轉換。

對於較小的批次——任何你能在一段時間內點完的數量——停留在瀏覽器中其實有實際優勢:不需要安裝、不需要 Python 環境、不需要上傳,也不需要每張檔案都與伺服器往返。解碼、縮放、亮度對應、複製以及 TXT 產生全部留在當前分頁中,因此來源檔案從不離開你正在操作的裝置。如果資料夾大小落在這個實用範圍內,且每張影像的設定都穩定,逐檔執行工具就是一個可行的批次工作流程。

延伸閱讀:Get a Base64 Image String for Flutter Without Uploading