本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
📚 前言
在AI编程时代,如何利用智能工具提升开发效率成为每位开发者必备的技能。本教程将带领大家通过CodeBuddy实现一个精美的电子名片生成系统,无需复杂的设计知识,只需几行代码即可完成专业级名片制作。
本项目特别适合Python初学者,通过实践掌握以下技能:
- Excel数据读取与处理
- PIL图像处理基础
- 中文字体渲染技巧
- 异常处理最佳实践
🛠️ 项目准备
所需材料
- 一个包含人员信息的Excel文件,格式如下:
- 第一列:姓名
- 第二列:昵称
- 第三列:职业
环境要求
- Python 3.6+
- 必要的Python库:pandas, Pillow, openpyxl
🚀 项目实战
步骤一:构思需求与提示词设计
注意在CodeBuddy当前版本3.1.16中还无法直接添加xlsx类型文件,因此我们需要设计更加详细的提示词。以下是我精心设计的提示词:
我需要一个生成名片信息的py文件, 名片信息在excel文件中,要求如下:
1. 每一行生成一个名片信息
2.名片布局要美观
3.excel 文件中第一列是姓名, 第二列是昵称,第三列是职业
💡 提示技巧:在使用AI编程助手时,即使无法上传文件,也可以通过详细描述文件结构来获得精准代码。
步骤二:代码生成与调整
将CodeBuddy生成的代码复制到开发环境中(如PyCharm)。由于我们没有指定Excel文件名称,需要进行一些调整:
- 修改Excel文件读取路径为实际文件名
- 确认输出目录设置
- 检查字体路径配置
步骤三:错误处理与AI辅助调试
初次运行时遇到了错误,这是编程过程中的常态。我们可以将错误信息提交给CodeBuddy进行分析和修复:
CodeBuddy迅速分析出问题所在并提供了修复方案:
步骤四:成功运行与效果展示
应用AI提供的修复方案后,程序成功运行,生成了精美的电子名片:
生成的名片效果图:
💻 完整代码
import pandas as pd
from PIL import Image, ImageDraw, ImageFont
import os
def generate_business_card(name, nickname, profession, output_path):
# 名片尺寸 (单位:像素)
width = 800
height = 500
# 创建空白名片
card = Image.new('RGB', (width, height), color=(255, 255, 255))
draw = ImageDraw.Draw(card)
# 尝试加载中文字体
try:
# 使用绝对路径或确保字体文件在正确位置
font_path = "../字体家AI造字春风.ttf" # 或者使用完整路径如 "/System/Library/Fonts/STHeiti Medium.ttc"
title_font = ImageFont.truetype(font_path, 60)
name_font = ImageFont.truetype(font_path, 48)
info_font = ImageFont.truetype(font_path, 36)
except Exception as e:
print(f"字体加载失败: {e}, 将使用默认字体")
# 使用Pillow的默认字体(不支持中文)
title_font = ImageFont.load_default(size=60)
name_font = ImageFont.load_default(size=48)
info_font = ImageFont.load_default(size=36)
# 绘制名片背景装饰
draw.rectangle([(0, 0), (width, 100)], fill=(70, 130, 180))
# 添加标题 - 使用更兼容的文本绘制方式
try:
draw.text((width // 2, 50), "名 片", font=title_font, fill=(255, 255, 255), anchor="mm")
except:
# 如果中文显示失败,使用英文
draw.text((width // 2, 50), "BUSINESS CARD", font=title_font, fill=(255, 255, 255), anchor="mm")
# 添加姓名
draw.text((width // 2, 180), name, font=name_font, fill=(0, 0, 0), anchor="mm")
# 添加昵称
if nickname and str(nickname).lower() != 'nan':
draw.text((width // 2, 250), f"昵称: {nickname}", font=info_font, fill=(100, 100, 100), anchor="mm")
# 添加职业
draw.text((width // 2, 320), f"职业: {profession}", font=info_font, fill=(70, 130, 180), anchor="mm")
# 添加底部装饰线
draw.line([(width // 4, height - 50), (3 * width // 4, height - 50)], fill=(70, 130, 180), width=3)
# 保存名片
card.save(output_path)
def main():
# 检查并创建输出目录
output_dir = "business_cards"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 读取Excel文件
try:
# 使用openpyxl引擎读取Excel文件
df = pd.read_excel("名单.xlsx", header=0, engine='openpyxl')
except FileNotFoundError:
print("错误: 找不到 business_cards.xlsx 文件")
print("请确保当前目录下有一个包含名片信息的Excel文件")
print("Excel文件格式: 第一列姓名, 第二列昵称, 第三列职业")
return
except Exception as e:
print(f"读取Excel文件时出错: {e}")
return
# 处理每一行数据
for index, row in df.iterrows():
name = str(row[0]) if pd.notna(row[0]) else "未提供"
nickname = str(row[1]) if len(row) > 1 and pd.notna(row[1]) else ""
profession = str(row[2]) if len(row) > 2 and pd.notna(row[2]) else "未提供"
# 生成名片
output_path = os.path.join(output_dir, f"{name}_名片.png")
generate_business_card(name, nickname, profession, output_path)
print(f"已生成: {output_path}")
print("\n所有名片已生成完毕!")
if __name__ == "__main__":
# 确保安装了所有依赖
try:
main()
except Exception as e:
print(f"程序运行时出错: {e}")
print("请确保已安装所有依赖: pip install pandas pillow openpyxl")
📝 项目要点与技术分析
-
数据处理:使用pandas库读取Excel文件,支持各种格式的表格数据
-
图像处理:利用PIL库创建自定义图像,实现名片布局和设计
-
异常处理:代码中包含完善的异常处理机制,提高程序健壮性
-
中文支持:解决了中文字体显示问题,提供了备选方案
🔍 总结与反思
本项目展示了AI编程助手在实际开发中的强大能力。通过CodeBuddy,我们快速实现了一个功能完整的名片生成系统。在开发过程中有一个值得注意的经验:务必仔细阅读AI给出的全部建议。我在实践中忽略了部分建议(如字体路径设置),导致了一些可避免的错误。