.webp directement à partir du fichier texte pour l'impressionjson personnalisée prise en charge Tout d'abord, vous devez télécharger handwriter.py ou copier son code source à vous. Si vous souhaitez utiliser des préréglages de configuration ou de police personnalisés, il suffit de cloner directement le compositeur:
gitclone https://github.com/Unbinilium/Handwriter.git
Deuxièmement, installez les dépendances que le manuel-python3 requis:
pip3 install uuid pillow twine setuptools wheel tox pytest handright
Troisièmement, entrez le chemin de manuel et exécutez handwriter.py par python3 handwriter.py , suivez les conseils affichés dans la console. Il génère un fichier de sortie .webp à l'aide de la configuration par défaut.
Enfin et surtout, pour éviter quelques erreurs rares, en vous assurant que le nom de votre fichier texte est *.txt et le nom et le texte sont codés avec UTF-8 . Pour les polices personnalisées, veuillez utiliser le fichier TrueTypeFont quelle extension est .ttf , et je recommande d'utiliser des polices d'écriture manuscrite par défaut. Remmber OutFilePath est un chemin de répertoire mais pas un chemin de fichier, l' ouvre-nom est automatiquement généré par UUID .
Pour plus de personnalisation, veuillez modifier manuellement le fichier de configuration Handwriter-Python3 nommé handwriter.json , l'exemple par défaut est ici:
{
"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" : " ,。》?;:’”】}、!%),.>?;:]}!%)′″℃℉ "
} Tout le *_path doit être spécialisé. Ensuite, exécutez handwriter.py avec le chemin du fichier de configuration de l' argument par python3 handwriter.py <configuration file path> .
La définition des paramètres des paramètres de type de base est ici. Pour renforcer la netteté et la clarté du texte, en utilisant une grande taille de papier ( background_width , background_hight ) et Big font_size est toujours recommandée. Veuillez remarquer que le paramètre line_spacing doit toujours plus grand que font_size . Si vous envisagez que l'espacement des mots est trop grand, définissez-le sur un nombre négatif.
- ______________________________________________________
^ | 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 -------> | Normalement, le paramètre font_color est défini sur black et background_color est défini sur white , en utilisant le profil de couleur RGBA et n'hésitez pas à définir la couleur en spécialisant le nom de la couleur. De plus, le background_color pourrait être un chemin de fichier photo , dans ce cas, background_color signifie un chemin de fichier d'image d'arrière-plan , essayez ceci si vous souhaitez utiliser une image d'arrière-plan personnalisée.
Le paramètre *_sigma signifie une plage de perturbation aléatoire et est toujours déterminée par la police d'écriture manuscrite que vous avez utilisée, la modifie toujours à laquelle correspond parfaitement à votre police personnalisée manuellement. Par exemple, "font_size_sigma":2 signifie la taille du caractère dérangeant au hasard dans la plage font_size ± 2 . De même, "perturb_theta_sigma":0.05 signifie un rayon de rotation de trait de caractère dérangeant au hasard dans la plage horizontal ± 0.05 . Pour éviter un caractère spécial comme ,。》?;:'”】}、!%),.>?;:]}!%)′″℃℉ apparaître à l'empreinte de la ligne, qui ne suit pas généralement des conventions d'écriture qui semblent étranges, un paramètre spécialisé end_chars est nécessaire.
Tout d'abord, vous devez télécharger handwriter.cpp ou copier son code source à vous. Si vous souhaitez utiliser les préréglages de police par défaut, il suffit de cloner directement le compositeur:
gitclone https://github.com/Unbinilium/Handwriter.git
Deuxièmement, veuillez exécuter handwriter.cpp avec des arguments configurés , et les arguments doivent suivre l'exemple de modèle ci-dessous:
handwriter.cpp <TEXT PATH> <OUT PUT PATH> <FONT(1) PATH> <FONT(2) PATH> ... <FONT(n) PATH>
Chaque argument est divisé par l'espace et suivez l'exemple de séquence, le fichier texte dans <TEXT PATH> n'a pas pu être vide et <OUT PUT PATH> doit contenir le nom de fichier avec l'extension du fichier .html , le numéro de chemin des polices est limité par la taille int . Soyez prudent que l'interdicateur de main nécessite au moins 1 chemin de police.
Par exemple, nous pouvons utiliser 4 polices personnalisées pour simuler l'écriture manuscrite à partir de /usr/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"
Il convertit simplement example.txt en example.html avec style de police d'écriture manuscrite, il est donc pratique d'utiliser différents types de polices qui ne sont déterminées que par votre navigateur. De plus, le format de chemin est flexible, le chemin local ou l'URL sont tous les deux corrects. Sinon, je recommande d'utiliser des polices d'écriture manuscrite par défaut. Pour plus de personnalisation comme le titre HTML , la taille de la police et l'espace de marge , modifiez le #define dans handwriter.cpp :
# 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.01Enfin, double-cliquez pour ouvrir le HTML généré dans votre navigateur et imprimez-le avec votre imprimante, une fausse écriture!
Actuellement, le manuel-CPP n'est qu'une idée très simple et dans un très bas niveau d'achèvement, il est en fait avec un algorithme très maladroit. Pour qui comme votre professeur peut voir facilement votre astuce.
Pour une génération d'écriture plus vraiment réelle, plus de degrés de transformation de liberté est nécessaire, comme la position horizontale, la position verticale et la taille de la police. Et l'ensemble de chaque mot doit être perturbé au hasard, y compris son angle de rotation de course. Aussi aléatoire mais pas temporairement aléatoire, algorithme pour la pression du stylo, la vitesse de déplacement du NIT, etc. est nécessaire. Et il vaut mieux utiliser le bras mécanique pour simuler l'écriture manuscrite au lieu de l'imprimante.
J'ai écrit ce programme juste pour le plaisir et l'apprentissage des personnages codent le principe plus profondément en pratiquant. De toute évidence, pour rendre cela parfait, l'utilisation de C ++ et HTML n'est pas une bonne idée, essayez plutôt Handwriter-Python3 .
Intercripteur écrit par Untanilium. Tous les préréglages de police proviennent d'Internet, une police chinoise de Hanyi.