cma_search/server/apps/edu/services.py

63 lines
2.2 KiB
Python

from PIL import ImageFont, ImageDraw, Image
from django.conf import settings
from apps.edu.models import Certificate
font_dict = {
'font_1': "/media/cert/template/weibei.ttf",
'font_2': "/media/cert/template/SIMLI.TTF"
}
def make_img_x(instance: Certificate):
titles = []
if instance.是否内审员:
titles.append('内审员')
if instance.是否授权签字人:
titles.append('授权签字人')
if instance.是否质量负责人:
titles.append('质量负责人')
if instance.是否最高管理者:
titles.append('最高管理者')
instance.证书地址 = make_img(instance.证书编号, instance.姓名, ''.join(titles), font_dict[f'font_{instance.字体方案}'])
instance.save()
def make_img(number, name, title, font_name_path):
# 打开底版图片
imageFile = settings.BASE_DIR + '/media/cert/template/background.jpg'
img = Image.open(imageFile)
# 选择字体与大小
font = ImageFont.truetype(settings.BASE_DIR+ font_name_path, 155)
font_title = ImageFont.truetype(settings.BASE_DIR + "/media/cert/template/siyuan.otf", 76)
font_number = ImageFont.truetype(settings.BASE_DIR + "/media/cert/template/timesbd.ttf", 58)
# print(font)
# 在图片上添加文字
# word = """
# 夜 归 小 朝
# 梦 鸟 舟 有 静
# 星 清 载 赤 安
# 河 风 我 羽 心
# 一 同 湖 暮 野
# 壶 桨 旋 落
# 茶 驻 停 霞
# ldc 2020-07-25
# """
word_number = number #"CTCZL20230001"
word_name = name #"曹前明"
word_title = title #"内审员、授权签字人、质量负责人、最高管理者"
# width = img.width
# height = img.height
# # 查看图片宽高
# print(width,height)
position_number = (1772, 645)
position_name = (628, 860)
position_title = (900, 1230)
color_name = (82, 68, 19)
color = (0,0,0)
draw = ImageDraw.Draw(img)
draw.text(position_name, word_name, color_name, font=font)
draw.text(position_title, word_title, color, font=font_title)
draw.text(position_number, word_number, color_name, font=font_number)
# 保存图片
path = f"/media/cert/{number}.jpg"
img.save(settings.BASE_DIR + path)
return path