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