画像→アスキーアート変換ツール

写真をアスキーアートに変換(TXT・PNG保存)

ここに画像をドロップ

またはクリックしてファイルを選択(JPG、PNG、WebP)

画像→アスキーアート変換ツールについて

アスキーアート変換は、画像を格子に分けてマスごとの平均の明るさを求め、その明るさに合う「濃さ」の文字を置く作業です。このツールでは列数(20〜300、超精密モードは最大2,400)を決めると行数を自動計算し、文字セット・反転・ガンマ・自動コントラスト・カラーを切り替えてテキストやPNGで保存できます。

仕上がりを左右するのは3点です。どの文字をどの順で使うか(明るさのランプ)、文字のマスが正方形でないことをどう補正するか(縦横比)、そして元画像の明るさがランプ全体を使うように広がっているかです。

明るさのランプ

標準の10段階ランプは「 .:-=+*#%@」です。空白はマスをほとんど塗らず、@はマスの多くをインクで埋めます。70段階ランプは1997年にPaul Bourkeがまとめた一覧を明るい順に並べ替えたもので、段階が多い分なめらかですが、文字の形がばらばらなので小さく表示すると逆にざらついて見えることがあります。

文字の濃さはフォントによって違うため、ランプの順序はあくまで目安です。ブロック文字(░▒▓█)は塗りの割合が明確で順序が安定していますが、日本語フォントでは全角幅で描かれます。このツールのPNG保存は欧文の等幅フォントを優先し、各文字をマス幅に収めて描くので格子は崩れませんが、TXTは開くソフトのフォントに従うため、等幅の欧文フォントで表示するのが無難です。

既定の対応は白地に黒文字が前提です。黒背景のターミナルに貼るなら反転をオンにしないと、写真のネガのように見えます。

文字のマスは縦長:縦横比の補正

等幅フォントの1マスは、幅より高さが1.8〜2倍ほど大きいのが普通です。画像を縦横同じ間隔で区切って1マス1文字にすると、結果はその分だけ縦に伸びます。そこで行数を「列数×元画像の縦/横×文字の縦横比」で減らします。既定値は0.55で、0.3〜1の範囲で調整できます。

行間の広いエディタやブログに貼ると、さらに縦に伸びるので値を下げてください。

マスの明るさの求め方

各マスは1点を拾うのではなく、範囲内のピクセルの平均色でまとめます。透明なピクセルはアルファに応じて軽く扱い、完全に透明なマスは白背景とみなします。透過PNGのロゴの周囲が@で埋まらないのはこのためです。

明るさは0.2126R+0.7152G+0.0722Bの加重和です。ガンマを外さずに計算しますが、文字選びに必要なのは明るさの順番なので実用上の問題はありません。霞んだ写真は明るさが中央に集まってランプの両端を使えないため、自動コントラストで上下2%を切り捨てた範囲を0〜255に広げます。

例

行数の計算

入力
1920×1080の画像、120列、縦横比0.55
結果
120×37の格子

120×(1080/1920)×0.55=37.1→37行。補正なし(1.0)の68行だと縦に約1.8倍伸びた絵になります。

明るさから文字へ(10段階、反転なし)

入力
明るさ 255 / 200 / 30 / 0
結果
空白 / : / % / @

(255−明るさ)/255×10の整数部分が位置です。200→2.16で「:」、30→8.82で「%」、0→10ですが最後の「@」に丸められます。

自動コントラストの効果

入力
マスの明るさ60、分布の2%・98%点が40と200
結果
「#」→「%」

(60−40)/(200−40)×255=31.9に広がり、より濃い文字になります。影が一段深くなり輪郭がはっきりします。

使い方

  1. 画像をドロップするか選択します。
  2. 列数と文字セットを選び、暗い背景で使うなら反転をオンにします。
  3. 比率がおかしければ文字の縦横比を、ぼやけていれば自動コントラストやガンマを調整します。
  4. テキストをコピーするか、TXT・PNGで保存します。

よくある質問

チャットに貼ると形が崩れます。

等幅フォントでないと文字ごとに幅が違い、格子が崩れます。コードブロックで囲むか、PNGで共有してください。

カラーモードはテキストでコピーしても色が残りますか?

いいえ。プレーンテキストには色情報がないので文字だけがコピーされます。色を残すならPNGで保存してください。

自分で文字を指定できますか?

はい。明るい(薄い)文字から暗い(濃い)文字の順に入力します。2文字未満の場合は標準ランプに戻ります。

出典

基準日:

プライバシーとデータの扱い