背景需求:
前期做了一个四字印章,但是我感觉线条繁密,幼儿肌群根本无法控制这样的划线,戳几个孔就会手指酸疼,加上这些线条幼儿不感兴趣(不知道什么意思)。可能会失去操作的意愿。
所以我想做成单字印章(活字印章),适合不同水平水平幼儿操作
1、选一个最简单的字,刻画图章,按压看看效果。
2、如果有兴趣的孩子,可以继续刻后面的字章。
3、四个字章分别压印刷,组合成一个印章。
WORD准备
代码展示:
这两个沿用之前的代码
重点是三个代码
一、单字制做黑色并左右翻转
'''
活字拼合:根据名字,提取对应九叠篆文字的图片,组合成1个字1个字,(幼儿来不及刻这么多字)印章形状(图片文字颜色变成黑色,图片左右翻转镜像)
星火讯飞、阿夏
20250202
'''
import pandas as pd
from PIL import Image
import os
from PIL import Image, ImageDraw
# 画布大小(正方形)
pic=500
# 边距线框粗细(靠边)
# bj=10
# # 边距线框粗细(留白边)
bj=20
# 只要前面30个人
start = 30
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250130篆章九叠篆'
# 读取 Excel 文件
df = pd.read_excel(path + r'\姓名.xlsx', usecols=[0, 1])
# 打印第一列和第二列组合的文字(图片名称) 创建图片名称列表
image_names = []
for index, row in df.iterrows():
image_name = f"{int(row[0]):02} {row[1]}"
image_names.append(image_name)
print(image_names)
# 定义一个函数来根据字数添加后缀
def add_suffix(cell):
if len(str(cell)) == 2:
return str(cell) + '印章'
elif len(str(cell)) == 3:
return str(cell) + '印'
else:
return cell
# 需要做图章的四个文字
df[df.columns[1]] = df[df.columns[1]].apply(add_suffix)
# 将修改后的 DataFrame 转换为列表
modified_list = df[df.columns[1]].values.tolist()
print(modified_list)
# 只要前面30个人
modified_list = modified_list[:start]
# 使用列表推导式将每个名字拆分成单个字符
split_chars = [char for name in modified_list for char in name]
print(split_chars)
print(len(split_chars))
# 定义文件夹路径和目标文件名列表
folder_path = path + r'\01 单字下载'
# 获取文件夹中的所有文件
all_files = os.listdir(folder_path)
# 按照姓名出现的顺序依次读取字的图片(活字)
matched_files = []
for char in split_chars:
matched_files.extend([os.path.join(folder_path, file) for file in all_files if char in file])
print(matched_files)
# 将字符列表按每4个一组进行嵌套(四个字一组)
nested_chars = [matched_files[i:i+1] for i in range(0, len(matched_files), 1)]
print(nested_chars)
# print(len(nested_chars))
# 把非透明的部分变成黑色
from PIL import Image
import os
# 设置文件夹路径
# folder_path = output_folder
new_path = path + r'\06 黑色单字(非镜像)'
os.makedirs(new_path, exist_ok=True)
#