.webpに実際に本物の手書きのテキストを生成します。json構成がサポートされていますまず、 handwriter.pyをダウンロードするか、そのソースコードをIDEにコピーする必要があります。カスタム構成またはフォントプリセットを使用する場合は、手書きを直接クローンするだけです。
gitclone https://github.com/Unbinilium/Handwriter.git
第二に、手書き者-Python3が必要とする依存関係をインストールしてください。
pip3 install uuid pillow twine setuptools wheel tox pytest handright
第三に、手書きのパスを入力し、 python3 handwriter.pyでhandwriter.pyを実行します。コンソールに表示されているヒントに従ってください。デフォルトの構成を使用して、出力ファイル.webpを生成します。
最後になりましたが、まれなエラーを回避するために、テキストファイルの名前が*.txtであり、名前とテキストの両方がUTF-8でエンコードされていることを確認します。カスタムフォントについては、拡張子が.ttfであるTrueTypefontファイルを使用してください。デフォルトで手書きのフォントを使用することをお勧めします。 Remmber Outfilepathはディレクトリパスですが、ファイルパスではなく、 outfileNameはUUIDによって自動的に生成されます。
さらにカスタマイズするには、 handwriter.jsonという名前のHandWriter-Python3構成ファイルを手動で編集してください。デフォルトの例はこちらです。
{
"text_file_path" : " ~/*.txt " ,
"font_file_path" : " ~/*.ttf " ,
"output_path" : " ~/ " ,
"background_color" : " white " ,
"background_width" : 2480 ,
"background_hight" : 3500 ,
"font_color" : " black " ,
"font_size" : 80 ,
"font_size_sigma" : 2 ,
"perturb_x_sigma" : 2 ,
"perturb_y_sigma" : 2 ,
"perturb_theta_sigma" : 0.05 ,
"line_spacing" : 80 ,
"line_spacing_sigma" : 3 ,
"word_spacing" : -30 ,
"word_spacing_sigma" : 3 ,
"left_margin" : 150 ,
"top_margin" : 150 ,
"right_margin" : 150 ,
"bottom_margin" : 150 ,
"end_chars" : " ,。》?;:’”】}、!%),.>?;:]}!%)′″℃℉ "
}すべての*_path専門化する必要があります。次に、 python3 handwriter.py <configuration file path>による引数構成ファイルパスでhandwriter.pyを実行します。
基本的なタイプ設定パラメーター定義はこちらです。テキストを強化するために、大きな紙のサイズ( background_width 、 background_hight )と大きなfont_sizeを使用して、常に推奨されます。 parameter line_spacing 、常にfont_sizeよりも常に大きくする必要があることに注意してください。単語の間隔が大きすぎると考える場合は、負の数に設定してください。
- ______________________________________________________
^ | Paper ^ |
| | word_spacing | top_margin |
b | left_margin |< --- >| v |
a | < --- > |-----------------------------| - |
c | - ------------ ------------ ^ |
k | ^ | ******** | | ******** | | line_ |
g | font_ | | ** | | ** ** | | |
r | size | | ** | | ** ** | | spacing |
o | v | ** | | ******** | v |
u | - ------------ ------------ - |
n | |-----------------------------|< -------- > |
d | ------------ right_margin |
| | | ******** | |
h | | *** ** | |
i | | ** | |
g | | ** char | |
h | ------------ |
t | ^ |
| | | bottom_margin |
v | v |
- |____________________________________________________ |
|<------- background_width -------> |通常、パラメーターfont_colorはblackに設定されており、 background_color RGBAカラープロファイルを使用してwhiteに設定されており、色名を専門とすることで色を自由に設定してください。また、 background_color画像ファイルパスになる可能性があります。この場合、 background_colorバックグラウンド画像ファイルパスを表します。カスタムの背景画像を使用する場合はこれを試してください。
パラメーター*_sigma 、ランダムな乱れた範囲を意味し、使用した手書きのフォントによって常に決定され、常にカスタムフォントを手動で完全に一致させるものに変更します。たとえば、 "font_size_sigma":2範囲のfont_size ± 2ランダムに乱れたキャラクターのサイズを意味します。同様に、 "perturb_theta_sigma":0.05は、範囲のhorizontal ± 0.05ランダムに乱す文字ストローク回転半径を意味します。 ,。》?;:'”】}、!%),.>?;:]}!%)′″℃℉ 、 end_charsに表示されます。
まず、 handwriter.cppをダウンロードするか、そのソースコードをIDEにコピーする必要があります。デフォルトのフォントプリセットを使用する場合は、直接クローン手書き者を作成するだけです。
gitclone https://github.com/Unbinilium/Handwriter.git
第二に、引数を構成してhandwriter.cppを実行してください。引数は、以下のテンプレートの例に従う必要があります。
handwriter.cpp <TEXT PATH> <OUT PUT PATH> <FONT(1) PATH> <FONT(2) PATH> ... <FONT(n) PATH>
各引数は空間によって分割されます シーケンスの例に従って、 <TEXT PATH>のテキストファイルは空になりませんint <OUT PUT PATH> 、ファイル拡張子.html備えたファイル名を含める必要があります。手書き者には少なくとも1つのフォントパスが必要であることに注意してください。
たとえば、4つのカスタムフォントを使用して、 /usr/local/example.txt local/example.txtから手書きをシミュレートできます。
handwriter.cpp "/handwriter-master/example.txt" "/handwriter-master/example.html" "/handwriter-master/font/font1.ttf" "/handwriter-master/font/font2.otf" "/handwriter-master/font/font3.woff" "https://fonts.gstatic.com/example.woff2"
example.txtをexample.htmlに手書きのフォントスタイルで変換するだけなので、ブラウザによってのみ決定されるさまざまなタイプのフォントを使用すると便利です。また、パス形式は柔軟性があり、ローカルパスまたはURLの両方が問題ありません。それ以外の場合は、デフォルトで手書きのフォントを使用することをお勧めします。 HTMLタイトル、フォントサイズ、マージンスペースなどのカスタマイズについては、 handwriter.cppで#defineを編集します。
# define HTML_TITLE " Handwriter "
# define FONT_SIZE_MIN 21
# define FONT_SIZE_MAX 25
# define FONT_SIZE_PRECISON 0.1
# define MARGIN_MIN 5.0
# define MARGIN_MAX 5.5
# define MARGIN_PRECISION 0.01最後にダブルクリックして、ブラウザで生成されたHTMLを開き、プリンターで印刷し、偽の手書きが得られました!
現在、手書き者CPPは非常に単純なアイデアにすぎず、非常に低いレベルの完了で、実際には非常に不器用なアルゴリズムを備えています。あなたの先生のような人があなたのトリックを簡単に見ることができます。
より本当に手書きの生成のために、水平位置、垂直位置、フォントサイズなど、より多くの自由変換が必要です。また、各単語の全体を、ストローク回転角を含めてランダムに乱す必要があります。また、ランダムですが、一時的にランダムではありません。ペン圧力、NIT移動速度などのアルゴリズムが必要です。また、プリンターの代わりに手書きをシミュレートするために機械式アームを使用する方が良いでしょう。
私はこのプログラムを楽しみのためだけに書き、キャラクターを練習することで原則を深くエンコードすることを学びました。明らかにこれを完璧にするために、C ++とHTMLを使用することは良い考えではありません。代わりに、手書きPython3を試してください。
unbiniliumによって書かれた手書き者。すべてのフォントプリセットは、インターネットからのもので、hanyiの中国のフォントがあります。