python实现批量给图片加文字工具

217 阅读4分钟

批量图片加文字工具 (Image Text Adder)

功能

本工具使用 Python 和 Tkinter GUI 实现,旨在方便用户批量为一张固定的背景图片添加具有指定样式的文字。

  • 选择背景图: 用户可以选择一张图片作为所有输出图片的背景。
  • 批量添加文字: 支持在文本框输入多行文字,每一行文字将生成一张独立的图片。
  • 自定义样式:
    • 字体选择: 用户可以指定 TrueType (.ttf) 或 OpenType (.otf) 字体文件。
    • 字体大小: 自定义文字的大小。
    • 文字颜色: 通过颜色选择器选取颜色。
    • 加粗与斜体: 可选加粗和斜体效果(效果依赖于所选字体是否包含对应变体)。
  • 定位与换行:
    • 绘制位置: 指定文字绘制区域的左上角坐标 (X, Y)。
    • 绘制宽度: 指定文字绘制的最大宽度,超出部分将自动换行。
  • 输出设置: 用户可以选择保存生成图片的文件夹。
  • 跨平台: 基于 Python 和 Tkinter,理论上可在 Windows, macOS, Linux 运行。
  • 打包运行: 可使用 PyInstaller 等工具打包成独立的可执行文件 (.exe),方便无 Python 环境的用户使用。

如何使用

  1. 运行程序: 直接运行 Python 脚本 (python image_text_adder.py) 或打包后的 .exe 文件。
  2. 选择背景图片: 点击 "选择背景图片" 按钮,选择一张图片文件。
  3. 输入文字: 在 "输入文字 (每行一个)" 的文本框中输入文字,一行代表一张输出图片。
  4. 选择输出目录: 点击 "选择输出目录" 按钮,选择一个用于保存结果图片的文件夹。
  5. 设置样式:
    • 点击 "选择字体文件" 选择 .ttf.otf 字体。
    • 在 "字号" 输入框中输入数字。
    • 点击 "选择颜色" 按钮选择文字颜色。
    • 勾选 "加粗" 或 "斜体" 复选框(可选)。
  6. 设置位置和宽度:
    • 输入文字区域左上角的 X 和 Y 坐标。
    • 输入文字区域的最大宽度(像素)。
  7. 开始生成: 点击 "开始生成" 按钮。
  8. 查看结果: 程序处理完成后,会提示成功信息。前往指定的输出目录查看生成的图片。

创作过程简述

  1. 需求分析: 理解核心需求:固定背景、批量文字、自定义样式(字体、大小、颜色、粗斜体)、自动换行、GUI 操作、EXE 打包、README 生成。
  2. 技术选型:
    • GUI: 选择 Python 内置的 Tkinter 库,简单易用,无需额外安装(除 Pillow 外)。使用 tkinter.ttk 改善视觉效果。
    • 图像处理: 选择强大的 Pillow (PIL fork) 库,用于打开、绘制文字、保存图片。
    • 打包: 计划使用 PyInstaller 将脚本打包成 .exe
    • 文件/目录操作: 使用 Python 内置的 os 模块。
  3. GUI 设计: 规划界面布局,包括文件/目录选择、文本输入、样式选项(字体、颜色、大小、粗斜体)、位置/宽度输入、执行按钮和状态显示区域。
  4. 核心逻辑实现 (Pillow):
    • 加载背景图。
    • 加载字体文件 (ImageFont.truetype)。尝试根据用户选择的粗体/斜体选项查找字体变体文件(例如 font-bold.ttf)。如果找不到,则回退到基础字体。
    • 实现文本换行逻辑:利用 ImageDraw.textbbox() (或 textlength 在旧版 Pillow) 测量文本宽度,结合 textwrap 模块或手动分割,确保文字在指定宽度内换行。
    • 在图片上绘制处理后的文字 (ImageDraw.Draw.text)。
    • 保存生成的新图片。
  5. Tkinter 界面编码:
    • 创建主窗口和各个控件 (Label, Button, Entry, Text, Checkbutton)。
    • 使用 grid 布局管理器排布控件。
    • 编写按钮的回调函数,连接 GUI 操作与后端逻辑(文件选择、颜色选择、执行生成)。
    • 添加输入验证和错误处理(如检查路径、数字输入)。
    • 添加状态更新,告知用户当前进度或结果。
  6. README 生成: 编写一个函数,在程序启动时将预定义的 Markdown 内容写入 README.md 文件。
  7. 打包配置 (PyInstaller): 准备 pyinstaller 命令,可能需要 --add-data 来包含字体文件(如果需要捆绑默认字体)或图标。命令示例:pyinstaller --onefile --windowed --name ImageTextAdder --icon=app.ico image_text_adder.py
  8. 测试与优化: 在不同情况下测试功能,修复 bug,优化用户体验。例如,禁用 "开始生成" 按钮直到所有必要信息都已输入。

1.png