テキストファイルを画像に変換する方法

テキストファイルを画像に変換する方法

プレーンテキストファイルがある場合は、コマンドラインでどのように画像ファイルに変換しますか? (そしてASCIIアートのレイアウトを維持します)

答え1

imagemagickあなたの友人ですか?次のような内容が役に立ちます。

convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black -draw @ascii.txt image.png

ascii.txtASCII-artファイルはどこにありますか?

text 15,15 "                 .88888888:. 
                88888888.88888. 
              .8888888888888888. 
              888888888888888888 
              88' _`88'_  `88888 
              88 88 88 88  88888 
              88_88_::_88_:88888 
              88:::,::,:::::8888 
              88`:::::::::'`8888 
             .88  `::::'    8:88. 
            8888            `8:888. 
          .8888'             `888888. 
          .8888:..  .::.  ...:'8888888:. 
        .8888.'     :'     `'::`88:88888 
       .8888        '         `.888:8888. 
      888:8         .           888:88888 
    .888:88        .:           888:88888: 
    8888888.       ::           88:888888 
    `.::.888.      ::          .88888888 
   .::::::.888.    ::         :::`8888'.:. 
  ::::::::::.888   '         .:::::::::::: 
  ::::::::::::.8    '      .:8::::::::::::. 
 .::::::::::::::.        .:888::::::::::::: 
 :::::::::::::::88:.__..:88888:::::::::::' 
  `'.:::::::::::88888888888.88:::::::::' 
        `':::_:' -- '' -'-' `':_::::'`  
    "

テキストの最初の行として追加されますtext 15,15(15、15は位置オフセットです)。また、変換する実際のテキストが引用符で囲まれていることを確認してください。一重引用符や二重引用符は問題ありませんが、混乱を招く可能性があるため、ASCIIアートの一部として使用しないでください。

選択したフォントは固定幅フォントでなければなりません。それ以外の場合、テキストはソートされません。

これは以下を生成します。

ここに画像の説明を入力してください。

答え2

入力ファイルを変更する必要がないという単純な理由から、ImageMagickの-annotate演算子はgarethTheRedが提案した方法よりも便利であると思います。-draw強力ではありませんが、-drawテキストファイルの内容をイメージに一括ダンプするのは問題ありません。

convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" image.png

指定されたファイルの内容のレンダリングされたバージョンを出力しますが、基本要素text 15x15の一部を含むように "ascii.txt"ファイルを変更しません-draw

パラメータの指定

-fontFreeMonoが利用できない場合、またはまったく必要ない場合、パラメータはサポートされているフォント名になることがあります。演算子を使用すると、ImageMagickコマンドで使用できるフォントのリストを取得できるため、すべての可能な引数が-list表示convert -list fontされます-font

-annotate(レンダリングされたテキストがキャンバスの端から移動する距離)パラメータは、それぞれ水平ピクセルと垂直ピクセルオフセットで構成されています。最初のオフセット(水平xオフセット)は正の整数にすることができますが、数ピクセルを超える必要はありません。 2番目のオフセット(垂直Yオフセット)〜しなければならないはい少なくとも-pointsizeImageMagickはフォントを配置するため、選択したフォント(のパラメータ)のポイントサイズと同じです。ベースライン指定されたオフセットのフォントです。したがって、フォントを最小ピクセルだけ下に移動しないと、最初の行のpointsize上部が切り捨てられます。

少なくとも数ピクセルずつ増やすことをお勧めします。したがって、これを使用している場合-pointsize 64-annotate +15+80(大きなフォントサイズで水平オフセットを増やす理由はありません。テキストサイズ。)

出力画像の必要なサイズを推測する必要があるのも面倒です。私は通常、あまりにも多くの値を選択し、ImageMagickを使用して-trim結果-borderを自動的に切り捨てます。次のコマンド:

convert -size 1000x2000 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" -trim -bordercolor "#FFF" -border 10 +repage image.png

1000x2000 ボックスでレンダリングし、10 ピクセルの境界線を除くテキストの周りの不要なスペースを切り取ります。最後に、+repage出力PNGを生成するために画像オフセットを使用することを防ぎます。これにより、GIMPがロード時にオフセットを適用する必要があるかどうかを尋ねるダイアログボックスが表示されます。

convert(明らかに1000x2000は、小さなテキストファイルの場合は大きすぎて長いテキストファイルの場合は少なくとも縦サイズを増やす必要があるかもしれません。

入力前処理

テキストファイルがレンダリングに必要な方法でまだフォーマットされていない場合(たとえば、非常に長い行を使用している場合)、ImageMagickに渡す前にこれを行う必要がありますconvert。テキストは全長に拡張されます。幸い、必要なコマンドラインフォーマッタを介してファイルを実行し、ファイルconvertから直接読み取るのではなく、処理されたテキストをパイプでリンクできます。

fmt < ascii.txt | convert -size 1000x2000 xc:white -font "DejaVu-Sans-Condensed" \
-pointsize 24 -fill black -annotate +15+30 "@-" -trim -bordercolor "#FFF" \
-border 10 +repage image.png

ascii.txtこれにより、24ポイントDejaVu Sans圧縮コンテンツがレンダリングされます。後ろにfmtこれは、デフォルトの動作モードで自動単語改行を使用して入力形式を75列の幅に変更するコマンドによって処理されました。 (ただし、URLのように75文字を超える長い連続文字列がある場合は拡張されます。)

テキスト形式が再指定されると、ファイルから直接読み取ったかのようにレンダリングパイプライン出力fmtに渡されます。 (ファイル名を指定するのは、「名前付きディスクファイルではなく標準入力から読み取る」という非常に一般的なUNIXシェルの略語であり、ImageMagickのツールはこの規則に従います。)convertfmt-

答え3

これにはオープンオフィスを使用できます。

soffice --convert-to jpg "Textfile.doc"

テキストファイルでも機能します。

答え4

簡単な解決策はpango-view提供されていますパンゴ、GTKで使用されるテキストレンダリングライブラリをインストールした可能性があります。

pango-view --font=mono -qo image.png file

あなたは作ることができますSVGまた!

pango-view --font=mono -qo image.svg file

pango-viewさまざまなカスタマイズとレイアウトオプションがあります。マンページを参照してください。

関連情報