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

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

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

答え1

imagemagickはここであなたの友達です。次のようなものが役立つかもしれません:-

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

ascii.txtASCII アート ファイルはどこにありますか:-

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 の演算子は、入力ファイルの変更を必要としないという単純な理由で、garethTheRed が提案した方法-annotateよりも少し便利だと思います。 ほど強力ではありませんが、テキスト ファイルの内容を画像に丸ごとダンプするには十分です。-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

引数の指定

FreeMono が利用できない場合 (または単に不要である場合)、 の引数-fontには、サポートされている任意のフォント名を指定できます。 演算子を使用して、ImageMagick コマンドで使用できるフォントのリストを取得できます-list。 では、convert -list fontの可能な引数がすべて表示されます-font

(レンダリングされたテキストをキャンバスの端からどれだけシフトするか)の引数は-annotate、それぞれ水平および垂直のピクセルオフセットで構成されます。最初のオフセット(水平方向の x シフト)は任意の正の整数にすることができますが、数ピクセルより大きくする必要はありません。2 番目のオフセット(垂直方向の y シフト)しなければならないなれ少なくとも選択されたフォントのポイントサイズ(の引数-pointsize)に等しい。ImageMagickはベースライン指定されたオフセットでのフォントのサイズです。したがって、フォントを少なくとも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 は読み込み時にオフセットを適用するかどうかを尋ねるダイアログ ボックスを表示します。

(明らかに、1000x2000 は小さなテキスト ファイルには大きすぎます。また、長いテキスト ファイルの場合は、少なくとも垂直方向の寸法を大きくする必要があるかもしれません。ただし、convert処理中に CPU とメモリを少し多く消費するだけなので、過大評価する方が簡単です。)

入力の前処理

テキスト ファイルが、レンダリングに必要な形式でフォーマットされていない場合 (たとえば、非常に長い行を使用している場合)、 に渡す前に再フォーマットする必要がありますconvert。ImageMagick はテキストを折り返さないため、テキストの各行は水平方向に完全に拡張されます。幸い、任意のコマンド ライン フォーマッタを使用してファイルを実行し、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.txt24ポイントのDejaVu Sans Condensedでコンテンツをレンダリングします。これはコマンドによって処理されfmt、デフォルトの動作モードでは、入力をワードラップして 75 列の幅に再フォーマットします。(URL のように 75 文字を超える長い連続文字列がある場合は、その文字列は拡張されます。)

テキストが再フォーマットされるとfmt、 に渡され、ファイルを直接読み込んだ場合と同じように、convertパイプ出力がレンダリングされます。( のファイル名を指定することは、「任意の名前付きディスク ファイルではなく標準入力から読み取る」という、かなり一般的な UNIX シェルの省略形であり、ImageMagick のツールはこの規則に従います。)fmt-

答え3

それには openoffice (libreoffice) を使うことができます。

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多くのカスタマイズおよびレイアウト オプションがあります。man ページを参照してください。

関連情報