.webp โดยตรงจากไฟล์ข้อความสำหรับการพิมพ์json แบบข้ามแพลตฟอร์มและกำหนดเอง ประการแรกคุณต้อง ดาวน์โหลด handwriter.py หรือคัดลอกซอร์สโค้ดให้คุณ IDE หากคุณต้องการใช้การกำหนดค่าที่กำหนดเองหรือฟอนต์ที่ตั้งไว้ล่วงหน้าเพียงแค่ใช้ลายมือทำโคลนโดยตรง:
gitclone https://github.com/Unbinilium/Handwriter.git
ประการที่สองติดตั้งการพึ่งพาที่ต้องการ Handwriter-Python3 :
pip3 install uuid pillow twine setuptools wheel tox pytest handright
ประการที่สามให้ป้อนพา ธ Handwriter และเรียกใช้ handwriter.py โดย python3 handwriter.py ทำตามเคล็ดลับที่แสดงในคอนโซล มันสร้างไฟล์เอาต์พุต .webp โดยใช้การกำหนดค่าเริ่มต้น
สุดท้าย แต่ไม่ท้ายสุดเพื่อหลีกเลี่ยงข้อผิดพลาดที่หายากตรวจสอบให้แน่ใจว่าชื่อไฟล์ข้อความของคุณคือ *.txt และทั้งชื่อและข้อความจะถูกเข้ารหัสด้วย UTF-8 สำหรับแบบอักษรที่กำหนดเองโปรดใช้ไฟล์ Truetypefont ซึ่งส่วนขยายคือ .ttf และฉันขอแนะนำให้ใช้แบบอักษรที่ชอบเขียนด้วยลายมือโดยค่าเริ่มต้น Remmber outfilepath เป็นเส้นทางไดเรกทอรี แต่ไม่ใช่เส้นทางไฟล์ outfilename จะถูกสร้างขึ้นโดยอัตโนมัติโดย UUID
สำหรับการปรับแต่งเพิ่มเติมโปรดแก้ไข ไฟล์การกำหนดค่า Handwriter-Python3 ชื่อ handwriter.json ด้วยตนเองตัวอย่างเริ่มต้นอยู่ที่นี่:
{
"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 ทั้งหมด จากนั้นเรียกใช้ handwriter.py พร้อม เส้นทางไฟล์การกำหนดค่า อาร์กิวเมนต์โดย python3 handwriter.py <configuration file path>
นิยามพารามิเตอร์การตั้งค่าประเภทพื้นฐานอยู่ที่นี่ เพื่อเสริมสร้างความคมชัดของข้อความและความคมชัดให้ใช้ขนาดกระดาษขนาดใหญ่ (แนะนำให้ใช้ ( background_width , background_hight ) และ Big font_size เสมอ โปรดสังเกตว่าพารามิเตอร์ 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 ถูกตั้งค่าเป็น white โดยใช้โปรไฟล์สี RGBA และรู้สึกอิสระที่จะตั้งค่าสีโดยเชี่ยวชาญชื่อสี นอกจากนี้ 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> ไม่สามารถว่างเปล่าและ <OUT PUT PATH> ควร มีชื่อไฟล์ที่มีนามสกุลไฟล์ .html หมายเลขฟอนต์หมายเลขเส้นทางถูก จำกัด ด้วยขนาด int ระวังผู้เขียนลายมือต้องใช้เส้นทางแบบอักษรอย่างน้อย 1 เส้นทาง
ตัวอย่างเช่นเราสามารถใช้แบบอักษร 4 แบบที่กำหนดเองเพื่อจำลองการเขียนด้วยลายมือจาก /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"
มันเพียงแค่แปลง example.txt เป็น example.html ด้วยสไตล์ตัวอักษรที่ใช้ลายมือด้วยลายมือดังนั้นจึงสะดวกในการใช้แบบอักษรประเภทต่าง ๆ ซึ่งกำหนดโดยเบราว์เซอร์ของคุณเท่านั้น นอกจากนี้รูปแบบพา ธ นั้นมีความยืดหยุ่นเส้นทางท้องถิ่นหรือ URL ก็โอเค มิฉะนั้นฉันขอแนะนำให้ใช้แบบอักษรที่ชอบเขียนด้วยลายมือโดยค่าเริ่มต้น สำหรับการปรับแต่งเพิ่มเติมเช่น ชื่อ HTML ขนาดตัวอักษร และ พื้นที่ระยะขอบ แก้ไข #define ใน 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.01ดับเบิลคลิกสุดท้ายเพื่อ เปิด HTML ที่สร้างขึ้นในเบราว์เซอร์ของคุณ และพิมพ์ด้วยเครื่องพิมพ์ของคุณลายมือปลอมได้รับ!
ปัจจุบัน Handwriter-CPP เป็นเพียงความคิดที่ง่ายมากและในระดับที่ต่ำมากจริง ๆ แล้วมันมีอัลกอริทึมที่ซุ่มซ่ามมาก สำหรับผู้ที่ครูของคุณอาจมองผ่านเคล็ดลับของคุณได้อย่างง่ายดาย
สำหรับรุ่นที่เขียนด้วยลายมือมากขึ้นจำเป็นต้องมีการแปลงอิสระในระดับที่มากขึ้นเช่นตำแหน่งแนวนอนตำแหน่งแนวตั้งและขนาดตัวอักษร และทั้งหมดของแต่ละคำควรถูกรบกวนแบบสุ่มรวมถึงมุมการหมุนจังหวะ ยังสุ่ม แต่ไม่สุ่มชั่วคราวอัลกอริทึมสำหรับความดันปากกา, ความเร็วในการเคลื่อนที่ของ NIT และอื่น ๆ และควรใช้แขนกลเพื่อจำลองการเขียนด้วยลายมือแทนเครื่องพิมพ์
ฉันเขียนโปรแกรมนี้เพื่อความสนุกสนานและเรียนรู้ตัวละครเข้ารหัสหลักการที่ลึกซึ้งยิ่งขึ้นโดยการฝึกฝน เห็นได้ชัดว่าการทำให้สิ่งนี้สมบูรณ์แบบการใช้ C ++ และ HTML ไม่ใช่ความคิดที่ดีโปรดลองใช้ Handwriter-Python3 แทน
ผู้เขียนลายมือเขียนโดย Unpinilium ค่าที่ตั้งไว้ล่วงหน้าทั้งหมดมาจากอินเทอร์เน็ตแบบอักษรจีนบางตัวจาก Hanyi