Skip to content

Latest commit

 

History

History
432 lines (312 loc) · 12.1 KB

README_ja.md

File metadata and controls

432 lines (312 loc) · 12.1 KB

textimg

test codecov

textimgは端末上の着色されたテキスト(ANSIまたは256色)を画像に変換するコマンドです。
エスケープシーケンスを解釈して色を画像に再現します。

Table of contents:

使用例

シンプルな使い方

textimg $'\x1b[31mRED\x1b[0m' > out.png
textimg $'\x1b[31mRED\x1b[0m' -o out.png
echo -e '\x1b[31mRED\x1b[0m' | textimg -o out.png
echo -e '\x1b[31mRED\x1b[0m' | textimg --background 0,255,255,255 -o out.jpg
echo -e '\x1b[31mRED\x1b[0m' | textimg --background black -o out.gif

画像フォーマットにはPNGとJPGとGIFが指定できます。 -oオプションと共にファイル拡張子を指定して、画像フォーマットを指定します。 デフォルトの画像フォーマットはPNGです。 リダイレクトなどの標準出力へ画像を出力する際は、PNGとして出力します。

外部コマンドとの連携

grep:

echo hello world | grep hello --color=always | textimg -o out.png

image

screenfetch:

screenfetch | textimg -o out.png

bat:

bat --color=always /etc/profile | textimg -o out.png

image

ccze:

ls -lah | ccze -A | textimg -o out.png

image

lolcat:

seq -f 'seq %g | xargs' 18 | bash | lolcat -f --freq=0.5 | textimg -o out.png

image

虹色に出力する例

ANSIカラー

\x1b[30m記法をサポートしています。

colors=(30 31 32 33 34 35 36 37)
i=0
while read -r line; do
  echo -e "$line" | sed -r 's/.*/\x1b['"${colors[$((i%8))]}"'m&\x1b[m/g'
  i=$((i+1))
done <<< "$(seq 8 | xargs -I@ echo TEST)" | textimg -b 50,100,12,255 -o testdata/out/rainbow.png

出力結果。

Rainbow example

256色指定

\x1b[38;5;255m記法をサポートしています。

フォント色の例。

seq 0 255 | while read -r i; do
  echo -ne "\x1b[38;5;${i}m$(printf %03d $i)"
  if [ $(((i+1) % 16)) -eq 0 ]; then
    echo
  fi
done | textimg -o 256_fg.png

出力。

256 foreground example

背景色の例。

seq 0 255 | while read -r i; do
  echo -ne "\x1b[48;5;${i}m$(printf %03d $i)"
  if [ $(((i+1) % 16)) -eq 0 ]; then
    echo
  fi
done | textimg -o 256_bg.png

出力。

256 background example

RGB指定の例

\x1b[38;2;255;0;0m記法をサポートしています。

seq 0 255 | while read i; do
  echo -ne "\x1b[38;2;${i};0;0m$(printf %03d $i)"
  if [ $(((i+1) % 16)) -eq 0 ]; then
    echo
  fi
done | textimg -o extrgb_f_gradation.png

出力。

RGB gradation example

アニメーションGIF

アニメーションGIFをサポートしています。

echo -e '\x1b[31mText\x1b[0m
\x1b[32mText\x1b[0m
\x1b[33mText\x1b[0m
\x1b[34mText\x1b[0m
\x1b[35mText\x1b[0m
\x1b[36mText\x1b[0m
\x1b[37mText\x1b[0m
\x1b[41mText\x1b[0m
\x1b[42mText\x1b[0m
\x1b[43mText\x1b[0m
\x1b[44mText\x1b[0m
\x1b[45mText\x1b[0m
\x1b[46mText\x1b[0m
\x1b[47mText\x1b[0m' | textimg -a -o ansi_fb_anime_1line.gif

出力。

Animation GIF example

スライドアニメーション

echo -e '\x1b[31mText\x1b[0m
\x1b[32mText\x1b[0m
\x1b[33mText\x1b[0m
\x1b[34mText\x1b[0m
\x1b[35mText\x1b[0m
\x1b[36mText\x1b[0m
\x1b[37mText\x1b[0m
\x1b[41mText\x1b[0m
\x1b[42mText\x1b[0m
\x1b[43mText\x1b[0m
\x1b[44mText\x1b[0m
\x1b[45mText\x1b[0m
\x1b[46mText\x1b[0m
\x1b[47mText\x1b[0m' | textimg -l 5 -SE -o slide_5_1_rainbow_forever.gif

出力。

Slide Animation GIF example

Dockerでの使用例

Dockerでtextimgを使用できます。 (DockerHub)

docker pull jiro4989/textimg
docker run -v $(pwd):/images -it jiro4989/textimg -h
docker run -v $(pwd):/images -it jiro4989/textimg Testあいうえお😄 -o /images/a.png
docker run -v $(pwd):/images -it jiro4989/textimg Testあいうえお😄 -s

保存先ショートカット

-s オプションを使うと $HOME/Pictures (Windowsでは %USERPROFILE% ) に t.png という名前でファイルを保存します。この保存先ディレクトリは TEXTIMG_OUTPUT_DIR という環境変数で変更できます。

-t を組み合わせると、保存時にファイル名末尾に現在日時を付与できます。

$ textimg 寿司 -st

$ ls ~/Pictures/
t_2021-03-21-194959.png

また、 -n を組み合わせることで、保存しようとしたファイルがすでに存在した時に、 ファイル名末尾に番号を付与して、別名で保存します。

$ textimg 寿司 -sn

$ textimg 寿司 -sn

$ ls ~/Pictures/
t.png  t_2.png

インストール

Linux users (Debian base distros)

wget https://github.com/jiro4989/textimg/releases/download/v3.0.6/textimg_3.0.6_amd64.deb
sudo dpkg -i ./*.deb

Linux users (RHEL compatible distros)

sudo yum install https://github.com/jiro4989/textimg/releases/download/v3.0.6/textimg-3.0.6-1.el7.x86_64.rpm

With Go

go get -u github.com/jiro4989/textimg/v3

手動インストール

実行ファイルをReleasesからダウンロードしてください。

ヘルプ

textimg is command to convert from colored text (ANSI or 256) to image.

Usage:
  textimg [flags]

Examples:
textimg $'\x1b[31mRED\x1b[0m' -o out.png

Flags:
  -g, --foreground string         foreground text color.
                                  available color types are [black|red|green|yellow|blue|magenta|cyan|white]
                                  or (R,G,B,A(0~255)) (default "white")
  -b, --background string         background text color.
                                  color types are same as "foreground" option (default "black")
  -f, --fontfile string           font file path.
                                  You can change this default value with environment variables TEXTIMG_FONT_FILE
  -x, --fontindex int             
  -e, --emoji-fontfile string     emoji font file
  -X, --emoji-fontindex int       
  -i, --use-emoji-font            use emoji font
  -z, --shellgei-emoji-fontfile   emoji font file for shellgei-bot (path: "/usr/share/fonts/truetype/ancient-scripts/Symbola_hint.ttf")
  -F, --fontsize int              font size (default 20)
  -o, --out string                output image file path.
                                  available image formats are [png | jpg | gif]
  -t, --timestamp                 add time stamp to output image file path.
  -n, --numbered                  add number-suffix to filename when the output file was existed.
                                  ex: t_2.png
  -s, --shellgei-imagedir         image directory path for shellgei-bot (path: "/images/t.png")
  -a, --animation                 generate animation gif
  -d, --delay int                 animation delay time (default 20)
  -l, --line-count int            animation input line count (default 1)
  -S, --slide                     use slide animation
  -W, --slide-width int           sliding animation width (default 1)
  -E, --forever                   sliding forever
      --environments              print environment variables
      --slack                     resize to slack icon size (128x128 px)
  -h, --help                      help for textimg
  -v, --version                   version for textimg

フォント

デフォルトのフォントパス

デフォルトのフォントとして以下を使用します。

OS Font path
Linux /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc
Linux /usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc
MacOS /System/Library/Fonts/AppleSDGothicNeo.ttc
iOS /System/Library/Fonts/Core/AppleSDGothicNeo.ttc
Android /system/fonts/NotoSansCJK-Regular.ttc
Windows C:\Windows\Fonts\msgothic.ttc

TEXTIMG_FONT_FILE環境変数でフォントを変更できます。

例。

export TEXTIMG_FONT_FILE=/usr/share/fonts/TTF/HackGen-Regular.ttf

絵文字フォント (画像ファイルのパス)

textimgは絵文字を描画するために画像ファイルを使用します。 もしあなたが絵文字を描画したいなら、TEXTIMG_EMOJI_DIR環境変数をセットしなければなりません。

以下がその例です。

# お気に入りのフォントを指定できます
sudo git clone https://github.com/googlefonts/noto-emoji /usr/local/src/noto-emoji
export TEXTIMG_EMOJI_DIR=/usr/local/src/noto-emoji/png/128
export LANG=ja_JP.UTF-8
echo Test👍 | textimg -o emoji.png

Emoji example

絵文字フォント (TTF)

textimgはTEXTIMG_EMOJI_FONT_FILE環境変数、あるいは-iオプションで絵文字フォントを指定できます。

以下はSymbola fontを使用する例です。

export TEXTIMG_EMOJI_FONT_FILE=/usr/share/fonts/TTF/Symbola.ttf
echo あ😃a👍!👀ん👄 | textimg -i -o emoji_symbola.png

Symbola emoji example

Tab Completions

各種シェルのcompletions用ファイルをサポートしています。 シェルのタブ補完が使いたい場合は、このセクションの手順を実施してください。

Bash

以下のコマンドを実行します。

sudo cp -p completions/bash/textimg /usr/share/bash-completion/completions/textimg

Zsh

以下のコマンドを実行します。

sudo cp -p completions/zsh/textimg /usr/share/zsh/functions/Completion/_textimg

# or
# sudo cp -p completions/zsh/textimg {path to your $fpath}

Fish

以下のコマンドを実行します。

ln -sfn completions/fish/textimg.fish $HOME/.config/fish/completions/textimg.fish

開発

go version go1.15 linux/amd64

ビルド方法

以下のコマンドを実行する。

go build

Windows環境では動作確認していません。

参考