圖片轉 ASCII 字元畫
上傳圖片後自動生成 ASCII 藝術
免費線上圖片轉 ASCII 字元畫工具,基於瀏覽器內 Canvas 像素採樣、BT.709 灰階加權(Y = 0.2126R + 0.7152G + 0.0722B)與 Floyd-Steinberg 抖動演算法,把圖片像素映射為字元。提供簡潔、詳細、方塊 3 套字元集與任意自訂字元集,支援彩色模式、保持比例調節,生成純文字字元畫可一鍵複製或下載 .txt / .png,適合程式碼註解、終端 banner、社群頭像等極客創意場景。
相關推薦
什麼是 ASCII 字元畫?
ASCII 字元畫(ASCII Art)是用 ASCII 字元透過密度差異來呈現影像的一種藝術形式。最早源自 1970-80 年代印表機的字元解析度限制——印表機只能列印文字,於是有人用 @ # $ 模擬明暗做出「畫」來。
**怎麼轉?** 工具會用 Canvas 讀取圖片像素資料,按 BT.709 加權(Y = 0.2126R + 0.7152G + 0.0722B)計算每個網格的平均亮度,再用 Floyd-Steinberg 抖動把誤差擴散到相鄰像素,最後映射到字元集中對應密度位置的字元。密集字元 = 暗部,稀疏字元 = 亮部。本工具提供 3 套內建字元集和任意自訂字元集,梯度從 8 到 70 不等。
**彩色版如何保留顏色?** 彩色模式下使用方塊字元(▏▎▍▌▋▊▉█),每個字元對應原圖一個像素網格的 RGB 顏色。彩色版可下載為 .png 保留完整顏色。
**和點陣圖比:** ASCII 字元畫的解析度取決於字元數而不是像素,所以放大時由終端字型決定——可以非常大而不糊。但代價是無法精確還原細節。程式碼註解、終端 banner、社交頭像這類文字場景,ASCII 字元畫比點陣圖更合適。
適用場景
- 把照片、Logo、卡通角色轉成 ASCII 字元畫用於程式碼註解、README 和論壇簽名
- 終端和命令列介面需要文字藝術效果(SSH 登入歡迎語 / bashrc banner / figlet 替代)
- 極客風格創意表達,社群媒體頭像和個性簽名
- 生成的純文字字元畫可直接複製到 GitHub Issue、郵件簽名、部落格
- 把照片轉成彩色方塊字元畫,匯出 .png 用於復古風設計素材
- 把卡通角色、表情包轉成簡潔字元集用於聊天表情
- 批次產生 art 風格的程式碼註解或 README 裝飾
使用方法
- 上傳需要轉換的圖片檔案(支援 JPG / PNG / WEBP / GIF)
- 選擇字元集:簡潔(快速預覽)/ 詳細(最細膩)/ 方塊(彩色友好)
- 如需個性化,在「詳細」模式下輸入自訂字元序列(任意長度)
- 調節輸出寬度(預設 120 字元,範圍 10-960),決定字元畫的列數;高度按原圖比例自動換算
- 選擇彩色模式(彩色 / 黑白),彩色版可同時下載為 .png 保留顏色
- 點擊複製按鈕把字元畫存入剪貼簿,或下載 .txt / .png 匯出
功能特點
- 3 套內建字元集:簡潔(10 字元,最快)、詳細(70 字元,最細膩)、方塊(彩色終端友好)
- 任意自訂字元集:在「詳細」模式下可輸入任意長度的字元序列,自動按從暗到亮對應到 ASCII 灰度梯度
- 彩色模式:彩色版用方塊字元代表原圖色塊,黑白版專注輪廓對比
- 保持寬高比:原圖比例鎖定,僅調節寬度自動按比例換算高度
- 一鍵複製 / 下載:純文字字元畫可複製到剪貼簿或下載 .txt;彩色版可直接匯出 .png
- 本地處理:所有像素到字元的轉換在瀏覽器 Canvas 內完成,檔案不上傳
最佳实践
先調對比度,再轉 ASCII
ASCII 畫對原圖對比度非常敏感:低對比影像會讓字元偏向「一致化」顯得平淡。建議先用圖片濾鏡工具把對比度提升到 110-130% 再轉字元畫,能讓暗部更明顯、亮部更稀疏,整體層次感大幅提升。
細節圖用 70 字元集,Logo 用 10 字元集
字元集越細(如 70 字元的詳細集)能表達更平滑的明暗過渡,適合肖像、藝術作品;簡潔的 10 字元集只勾勒大致輪廓,適合 Logo、圖示、卡通角色。盲目使用詳細集處理 Logo 反而會讓簡單圖形顯得雜亂。
寬度 120 是閱讀和細節的平衡點
預設寬度 120 字元(範圍 10-960)適合螢幕閱讀和大多數場景。人像建議 150-300,Logo 建議 60-100,超過 400 會導致字元總數過多、佔用螢幕捲動;低於 50 則細節丟失嚴重。根據最終展示位置(社群媒體、終端、部落格)選擇合適寬度。
保持寬高比開關預設開啟
本工具預設開啟保持寬高比,確保字元畫不出現形變。關閉此功能可以獨立調節行數(如需要 30 行橫幅),但會拉伸或壓扁畫面。新手建議保持開啟,待熟練後再嘗試自訂長寬比。
彩色模式用方塊字元集
彩色模式下方塊字元(▏▎▍▌▋▊▉█)能保留原圖色塊,每個字元對應一個像素網格顏色。詳細字元集(70 字元)雖然細膩但主要用於黑白模式,與彩色版結合效果一般。方塊字元集是彩色輸出的最佳搭配。
自訂字元集按「密到疏」排列
自訂字元集時,輸入的字元應按從最密(暗部對應)到最疏(亮部對應)的順序排列。例如「@#*+=:.」就是從密到疏的典型順序,工具會自動按此順序映射亮度梯度。如果順序顛倒,畫面會變成反相效果。
下載 .txt 用於純文字場景,下載 .png 用於彩色
黑白字元畫建議下載 .txt,可貼到任何文字編輯器、終端、程式碼註解、部落格、論壇簽名。彩色字元畫建議下載 .png,可保留完整的 RGB 色彩用於設計素材、社群媒體圖片、網頁插圖。
極複雜圖先用圖片壓縮減小尺寸
超高解析度照片(如 4000x3000 像素)轉字元畫時計算量較大、字元畫會非常寬。建議先用圖片壓縮工具把原圖壓縮到 1000 像素以下再轉字元畫,能大幅提升轉換速度,字元畫品質也更易控制。
常見問題
怎麼把圖片轉成 ASCII 字元畫?
上傳圖片後,本工具在瀏覽器內透過 Canvas getImageData 讀取像素資料,按 BT.709 加權(Y = 0.2126R + 0.7152G + 0.0722B)計算每個網格的平均亮度,再用 Floyd-Steinberg 抖動演算法把亮度梯度映射到所選字元集的對應位置,幾秒內生成由字元組成的畫。結果可一鍵複製到剪貼簿,或下載為 .txt 檔案。
為什麼用 BT.709 灰階加權而不是簡單 RGB 平均?
人眼對綠色最敏感、對藍色最不敏感,BT.709 加權公式 Y = 0.2126R + 0.7152G + 0.0722B 正是依據此生理特性設計,已被 HDTV、UHD 電視和現代影像產業廣泛採用。簡單 RGB 平均會讓暗部偏黃、亮部偏粉;用 BT.709 把彩色像素映射到字元密度,結果更接近人眼真實感受,肖像和漸層場景細節更準。
什麼是 Floyd-Steinberg 抖動?為什麼需要它?
Floyd-Steinberg 是 1976 年提出的經典誤差擴散抖動演算法:每個像素量化後的誤差按 7/16、3/16、5/16、1/16 比例分配到右、下、右下、左下四個相鄰像素。把它用於 ASCII 轉換,可以避免低密度字元集(如簡潔集 10 字元)出現色塊斷裂、輪廓鋸齒的問題,讓暗部到亮部的過渡更平滑、細節保留更好。toolshu 等競品把它做成開關,我們預設開啟以保證最佳效果。
內建哪些字元集?支援自訂嗎?
內建 3 套:簡潔(10 字元 @%#*+=-:. 速度快)、詳細(70 字元梯度最平滑,適合肖像)、方塊(▏▎▍▌▋▊▉█ 適合彩色終端展示)。同時支援自訂字元集:在「詳細」模式下,輸入任意長度的字串(典型 2-30 字元),工具會按從密到疏自動排序映射,特殊符號、Emoji 表情都可使用。
ASCII 畫能保留顏色嗎?
可以。本工具提供彩色模式開關:黑白版專注於輪廓對比度,彩色版用方塊字元並保留原圖色塊,每個字元對應一個原圖像素網格的顏色。彩色版可同時下載為 .png 圖片,保留完整 RGB 色彩。
轉換後的字元畫怎麼儲存和使用?
黑白版可一鍵複製到剪貼簿,或下載為 .txt 純文字檔案,可直接貼到程式碼註解、README、部落格、終端輸出或論壇簽名。彩色版除了可複製文字外,還能下載為 .png 圖片保留顏色資訊。
什麼樣的圖片適合轉成 ASCII?
對比度高、輪廓清晰的圖片效果最好,如人像剪影、Logo、卡通角色、風景照。細節繁複、顏色相近的照片字元化後會丟失資訊,建議先使用圖片濾鏡工具提對比度再轉換,或者選擇簡潔字元集避免細節雜訊。
輸出寬度和高度怎麼調節?
寬度參數決定輸出的字元列數(預設 120,範圍 10-960),高度按原圖比例自動換算。保持寬高比開關預設開啟,關閉後可以獨立設定行數。寬度 80-150 適合螢幕閱讀;150-300 適合肖像細節;超過 400 會讓字元總數過多、閱讀性下降。
ASCII 字元畫和點陣圖有什麼不同?
ASCII 畫是文字字元組成,解析度由字元數量決定,可在任意終端或字型中無限放大而不糊,但無法精確還原顏色和細節。點陣圖是像素矩陣,縮放時會出現模糊或鋸齒,但能精確保留顏色和細節。兩者適合不同場景,詳見對比表。
和 figlet、jp2a 等命令列工具相比,本工具有什麼優勢?
figlet 主要生成文字 ASCII 藝術(font banners),jp2a 是命令列圖片轉字元工具,需要安裝與學習命令參數。本工具是瀏覽器內即時執行的純前端方案,無需安裝、無需註冊、跨平台一致,並支援彩色 .png 匯出與自訂字元集,適合快速把任意圖片轉成字元畫用於程式碼註解或社群分享。
圖片轉 ASCII 會上傳到伺服器嗎?安全嗎?
不會。所有圖片像素到字元的映射均在瀏覽器內透過 Canvas getImageData + JS 字元映射完成,檔案不會上傳到任何伺服器,關掉瀏覽器即釋放記憶體。即使是私人照、掃描檔、合約照片也可以放心處理。
術語表
- ASCII / Unicode
- ASCII 是 7 位元字元集,包含 128 個基本字元。Unicode 包含全球文字和符號,本工具的方塊字元(▏ ▎ ▍ ▌ ▋ ▊ ▉ █)屬於 Unicode 字元,可在支援 Unicode 的終端中顯示為彩色塊狀效果。MDN - Unicode
- BT.709 灰度加權
- RGB 轉灰度公式:Y = 0.2126R + 0.7152G + 0.0722B。本工具預設採用此加權計算每個像素網格的平均亮度,符合人眼對綠色高敏感度的特性,比簡單 RGB 平均更接近真實視覺效果。
- Canvas 像素取樣
- 透過 HTML5 Canvas 的 getImageData() 方法讀取圖片每個像素的 RGBA 值。本工具按字元網格大小對像素進行分塊平均,再用 BT.709 加權轉為灰度值,最後映射到字元集對應位置。
- 字元密度梯度
- 字元集從最密字元到最疏字元的過渡級數。簡潔集 10 級、詳細集 70 級、方塊集 8 級。梯度越多,明暗過渡越平滑;梯度越少,輸出越抽象快速。本工具 3 套字元集覆蓋從快速預覽到肖像級細節的不同需求。
- 保持寬高比 (Maintain Aspect Ratio)
- 鎖定原圖長寬比,確保字元畫不變形。本工具預設開啟,調節寬度時高度按原圖比例自動換算。關閉後可以獨立調節寬高(如橫幅字元畫),但會拉伸或壓扁畫面。
- 終端 banner
- 命令列啟動時顯示的文字藝術,常用於 SSH 登入歡迎語、程式啟動畫面、CI/CD 日誌頭。ASCII 字元畫是終端 banner 的經典形式,可由 figlet、toilet 等工具生成,本工具適合作為這些工具的輕量級瀏覽器替代。
3 套內建字元集與自訂字元集一覽
| 字元集名稱 | 字元序列(從暗到亮) | 密度等級 | 典型用途 |
|---|---|---|---|
| 簡潔 10 字元 | @%#*+=-:. | 10 級 | 快速預覽、Logo、表情 |
| 詳細 70 字元 | $@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. | 70 級 | 肖像、藝術作品、高細節 |
| 方塊字元 | ▏▎▍▌▋▊▉█ | 8 級 | 彩色終端、彩色版輸出 |
| 自訂字元 | 由使用者輸入,任意長度 | 使用者決定 | 個性化效果、特色風格 |
ASCII 字元畫與點陣圖特性對比
| 維度 | ASCII 字元畫 | 點陣圖(PNG/JPG) |
|---|---|---|
| 組成元素 | Unicode 字元 | 像素 |
| 可縮放性 | 隨終端/字型自然縮放 | 縮放模糊或鋸齒 |
| 顏色支援 | 彩色版用方塊字元保留色塊 | 任意 RGB |
| 檔案體積 | 通常 1-10 KB 純文字 | 幾 KB 到幾十 MB |
| 編輯方式 | 記事本 / Vim 任意修改 | 需要修圖軟體 |
| 適合場景 | 程式碼註解、終端 banner、社交頭像 | 照片、網頁插圖 |
Authoritative References
- ReferenceWikipedia - ASCII 藝術
- ReferenceWikipedia - Figlet
- ReferenceITU-R BT.709 影像標準
- ReferenceWikipedia - Floyd-Steinberg 抖動
- ReferenceWikipedia - Unicode 字元
- 圖片壓縮
- 圖片格式轉換
- PNG 轉 JPG
- HEIC 轉 JPG
- WebP 轉 JPG
- JPG 轉 PNG
- JPG 轉 WebP
- PNG 轉 WebP
- WebP 轉 PNG
- HEIC 轉 PNG
- HEIC 轉 WebP
- AVIF 轉 JPG
- 圖片裁切
- AVIF 轉 PNG
- AVIF 轉 WebP
- GIF 轉 JPG
- GIF 轉 PNG
- GIF 轉 WebP
- SVG 轉 JPG
- SVG 轉 PNG
- SVG 轉 WebP
- TIFF 轉 JPG
- 圖片濾鏡
- TIFF 轉 PNG
- TIFF 轉 WebP
- ICO 圖示產生
- 圖片編輯器
- QR Code 掃描器
- 圖片尺寸調整
- 圖片旋轉翻轉
- 圖片圓角
- 雪碧圖產生器
- SVG 檢視器
- 圖片轉 ASCII 字元畫
- 圖片放大
- 圖片浮水印