Skip to content

ReRokutosei/fork-hand-write

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

手写模拟器

基于 Python 和 handright 的手写图片生成工具。

GUI

Important

本项目不提供二进制包,请自行克隆

GPU 需 NVIDIA 显卡 + CUDA Toolkit

多字体效果依赖字体风格一致性,否则可能突兀

字体文件体积过大且存在法律风险,本项目不提供

推荐:lxgw小赖字体、或者前往猫啃网搜索心仪字体

与原项目的区别

相比于原项目,本版本进行了以下改进:

  • 现代化界面:采用标签页设计,参数分类更清晰
  • 多字体支持:支持最多20个字体文件,实现智能字体切换
  • 图形化颜色选择器:取代手动输入RGB值的方式
  • 增强的导出功能:支持PNG/JPEG格式及质量设置
  • GPU加速:可选的NVIDIA GPU加速支持(CuPy)
  • 改进的配置系统:使用YAML格式替代纯文本配置
  • 现代化依赖管理:使用uv管理依赖,符合现代Python项目的组织方式

Important

本项目 fork 自 hand-write(MIT 许可)

自 2025 年起,本版本由 ReRokutosei 重写并以 GPLv3 发布。原始版权声明按 MIT 要求保留在 NOTICE 文件中

功能

  • 文本 → 手写风格图片
  • 支持多字体(最多 20 个)、自定义背景、颜色、间距、边距、扰动等参数
  • 智能多字体:重复字符自动切换字体,增强自然感
  • 图形化颜色选择器
  • 自动加载 fonts/background/ 目录下的资源
  • 配置保存/加载(YAML 格式)
  • 导出 PNG / JPEG(可设质量)
  • 可选 GPU 加速(NVIDIA + CUDA)

性能(以 2000 中文字符为例)

  • CPU:15–20 秒
  • GPU(NVIDIA):3–6 秒

少量文本(<500 字)GPU 加速可能因数据传输开销而不如 CPU 快,建议仅用于长文本。

安装与运行(需要先安装 uv

# 安装依赖
uv sync

# 启动
uv run python src/main.py

启用 GPU 加速(可选)

  1. 安装对应 CUDA 版本的 CuPy:
# CUDA 12.x
uv add cupy-cuda12x

# CUDA 11.x
uv add cupy-cuda11x
  1. 验证:
uv run python -c "import cupy as cp; print(cp.__version__, cp.cuda.is_available())"

程序启动时自动检测 GPU,不可用则回退到 CPU。

使用

  1. 输入文本
  2. 配置字体(主字体 + 辅助字体)
  3. 选背景图(可选)
  4. 调整参数 → 预览 → 导出
  5. 可保存/加载配置(YAML)

界面说明

程序界面分为两个主要区域:

Param

  1. 左侧预览区域:显示生成的手写效果预览
  2. 右侧设置区域
    • 文本输入区:输入要转换为手写的文字
    • 基础设置:
      • 字体选择:点击配置按钮打开字体管理对话框,可添加多个字体文件(最多20个)
      • 背景图片:选择用作纸张背景的图片
    • 参数设置(标签页形式):
      • 间距设置:调整字间距、行间距等
      • 边距设置:设置纸张边距
      • 扰动设置:控制手写效果的自然随机性
      • 导出设置:设置导出图片的格式和质量
      • 颜色设置:通过图形化颜色选择器设置字体颜色

使用说明

  1. 在文本框中输入要转换为手写的文字
  2. 点击"字体选择:点击配置"按钮配置字体文件(可选多个)
  3. 选择背景图片
  4. 调整各种参数(字间距、行间距、边距等)
  5. 在颜色设置中通过图形化颜色选择器设置字体颜色
  6. 在导出设置中选择导出图片的格式(PNG/JPEG)和JPEG质量
  7. 点击"预览"查看效果
  8. 点击"导出"将生成的图片保存到您选择的位置
  9. 可以使用"保存配置"和"载入预设"来保存和加载参数设置

多字体增强功能

本版本新增了智能多字体应用功能:

Fonts

  • 支持最多20个字体文件的配置
  • 字体列表中第一个字体为主字体,用于书写首次出现的字符
  • 重复出现的字符会循环使用辅助字体(第二个及之后的字体)
  • 例如:如果配置了4个字体[A, B, C, D],其中A为主字体,B、C、D为辅助字体
    • 文本中首次出现的"代"字使用字体A
    • 第二次出现的"代"字使用字体B
    • 第三次出现的"代"字使用字体C
    • 第四次出现的"代"字使用字体D
    • 第五次出现的"代"字再次使用字体B(循环)

实际感觉有点鸡肋,原本的单字体扰动已经够用了,而且必须找到风格相近的字体才不会突兀。

参数说明

  • 字体列表:用于手写的字体文件(.ttf 或 .otf),第一个为主字体,程序会为重复字符随机应用不同字体
  • 背景路径:用作纸张背景的图片
  • 各种数值参数控制手写效果的细节
    • 字间距、行间距
    • 边距设置
    • 随机扰动参数
  • 导出设置:
    • 图片格式:支持PNG、JPEG格式
    • 图片质量:设置图片的质量(1-100),仅在JPEG格式下生效

其他

  • ico图标来自Google
  • background图片来自原仓库

About

模拟手写效果,节约时间。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%