77 lines
3.5 KiB
Python
77 lines
3.5 KiB
Python
import textwrap
|
||
|
||
from PIL import Image, ImageDraw, ImageFont
|
||
import pandas as pd
|
||
|
||
def add_text(text_item):
|
||
|
||
for key, value in text_item.items():
|
||
i = 1
|
||
for text in value:
|
||
if type(text[0]) == str:
|
||
image = Image.open(r'D:\cori\员工奖励bg1.png')
|
||
draw = ImageDraw.Draw(image)
|
||
font_path_title = r'D:\onedrive\Documents\WeChat Files\fumeng0108\FileStorage\File\2020-05\思源黑体(7款)\思源黑体(7款)\SourceHanSansCN-Bold.otf'
|
||
font_path_content = r'D:\onedrive\Documents\WeChat Files\fumeng0108\FileStorage\File\2020-05\思源黑体(7款)\思源黑体(7款)\SourceHanSansCN-Regular.otf'
|
||
font_size_title = 36
|
||
font_size_content = 25
|
||
|
||
font_title = ImageFont.truetype(font_path_title, font_size_title)
|
||
font_content = ImageFont.truetype(font_path_content, font_size_content)
|
||
i += 1
|
||
# print(text)
|
||
# print(text[0])
|
||
# print(text[1])
|
||
# print(text[2])
|
||
# print(text[3])
|
||
# print(text[4])
|
||
# print(text[5])
|
||
save_name = key + text[0] + str(i) + '.png'
|
||
print(save_name)
|
||
# 获取文本大小
|
||
text_width1, text_height1 = draw.textsize(text[0], font_title)
|
||
text_width2, text_height2 = draw.textsize(text[1], font_content)
|
||
text_width3, text_height3 = draw.textsize(text[2], font_content)
|
||
text_width4, text_height4 = draw.textsize(str(text[3]), font_content)
|
||
text_width5, text_height5 = draw.textsize(str(text[4]), font_content)
|
||
|
||
# 计算文本的位置使其居中
|
||
image_width, a = image.size
|
||
text_x1 = (image_width - text_width1) / 2
|
||
text_x2 = (image_width - text_width2) / 2
|
||
text_x3 = (image_width - text_width3) / 2
|
||
text_x4 = (image_width - text_width4) / 2
|
||
text_x5 = (image_width - text_width5) / 2
|
||
|
||
# 在图片上添加文本
|
||
draw.text((text_x1, 19), text[0], font=font_title, fill="#AA1017")
|
||
draw.text((text_x2, 186), text[1], font=font_content, fill="#FAC79B")
|
||
draw.text((text_x3, 346), text[2], font=font_content, fill="#FAC79B")
|
||
draw.text((text_x4, 505), str(text[3]), font=font_content, fill="#FAC79B")
|
||
draw.text((text_x5, 664), str(text[4]), font=font_content, fill="#FAC79B")
|
||
# text_width = 22
|
||
# wrapped_text = textwrap.wrap(text[5], width=text_width)
|
||
# pos = (36, 868)
|
||
# leading = 42
|
||
# for i, line in enumerate(wrapped_text):
|
||
# draw.text((pos[0], leading * i + pos[1]), line, font=font_content, fill="#FAC79B")
|
||
|
||
# 保存修改后的图片
|
||
image.save(r"D:\cori\员工营销" + "/" + save_name)
|
||
|
||
def get_data(file_path):
|
||
# 读取Excel文件
|
||
excel_data = pd.read_excel(file_path, sheet_name=None)
|
||
|
||
# 将每个sheet的数据转换成字典
|
||
data_dict = {}
|
||
for sheet_name, sheet_data in excel_data.items():
|
||
data_dict[sheet_name] = sheet_data.values.tolist()
|
||
|
||
return data_dict
|
||
# print(data_dict['全员'][0])
|
||
|
||
file_path = r'D:\cori\2024年全员营销奖励一张表 - 营销助手展示-拆分.xlsx'
|
||
text_item = get_data(file_path)
|
||
|
||
add_text(text_item, ) |