首页 > 编程语言 >python 生成荣誉证书

python 生成荣誉证书

时间:2023-07-13 18:34:54浏览次数:48  
标签:荣誉证书 draw python text font2 生成 cert font fill

准备材料

  • 荣誉证书空白模板
  • 机构印章
  • 用户照片
  • 字体
    Xingkai.ttc
    STHeitiMedium.ttc
    ShiGongZiHei.otf

python 代码


import time

from PIL import Image, ImageDraw, ImageFont
from datetime import datetime


def make_badge(nickname, subject_name, id_no, dist, mark_img):
    bg = Image.open('img.png').convert('RGBA').resize((2600, 1832))
    mark_img = Image.open(mark_img).convert('RGBA').resize((295, 415))
    width, height = mark_img.size
    ratio = width / height
    new_w = int(476 * ratio)
    head = mark_img.resize((new_w, 476), 1)
    bg.paste(head, (int(665 - new_w / 2), int(1042 - 476 / 2)))

    draw = ImageDraw.Draw(bg)
    font = ImageFont.truetype('Xingkai.ttc', 70)
    draw.line([(1400, 850), (1700, 850)], fill="black", width=2)
    if len(nickname) == 2:
        draw.text((1500, 760), nickname, (0, 0, 0), font=font)
    elif len(nickname) == 3:
        draw.text((1420, 760), nickname, fill="black", font=font)
    elif len(nickname) == 4:
        draw.text((1350, 760), nickname, (0, 0, 0), font=font)
    else:
        draw.text((1500, 760), nickname, fill=(0, 0, 0), font=font)

    cert_name = f'(街道/社区/网格/红色驿站)参加“{subject_name}”,通过考试,成绩合格。'

    n = 10
    rs = [cert_name[i:i + n] for i in range(0, len(cert_name), n)]
    font2 = ImageFont.truetype("STHeitiMedium.ttc", 58)
    draw.text((1700, 780), rs[0], fill=(0, 0, 0), font=font2)

    n = 14
    cert_name2 = cert_name.replace(rs[0], '')
    rs2 = [cert_name2[i:i + n] for i in range(0, len(cert_name), n)]
    s_h = 900
    for rs2_str in rs2:
        draw.text((1400, s_h), rs2_str, fill=(0, 0, 0), font=font2)
        s_h += 120


    time_local = time.localtime(datetime.now().timestamp())
    cert_date = time.strftime("%Y            %m            %d", time_local)
    font1 = ImageFont.truetype('ShiGongZiHei.otf', 35)
    draw.text((1685, 1527), cert_date, fill="black", font=font1)
    draw.text((1686, 1528), cert_date, fill="black", font=font1)

    info_id = '身份证号:'
    font2 = ImageFont.truetype('STHeitiMedium.ttc', 40)
    draw.text((375, 1426), info_id, fill=(0, 0, 0), font=font2)
    draw.text((376, 1427), info_id, fill=(0, 0, 0), font=font2)

    font3 = ImageFont.truetype('ShiGongZiHei.otf', 40)
    draw.text((556, 1426), id_no, fill=(75, 75, 75), font=font3)

    corp = '北京安信会计师事务所有限公司'
    draw.text((1585, 1400), corp, fill=(0, 0, 0), font=font2)
    draw.text((1586, 1401), corp, fill=(0, 0, 0), font=font2)

    stamp = Image.open('stamp.png').convert("RGBA").resize((377,383))
    bg.paste(stamp, (1685, 1200),mask=stamp.point(lambda i: i * 80 / 255))

    bg.save(dist, save_all=True, dpi=(300, 300), quality=95)


if __name__ == '__main__':
    make_badge("陈悠怡", "推进民生事项", "42011219771212****", "output.png", "avatar.png")

gitib源码

标签:荣誉证书,draw,python,text,font2,生成,cert,font,fill
From: https://www.cnblogs.com/guanchaoguo/p/17551712.html

相关文章

  • python之数据库: 约束条件
    约束条件"""约束条件的意思是,在数据类型的基础上再添加限制条件"""1.unsigned去除符号createtablet1(idintunsigned);2.zerofill3.notnull非空createtablet2(idint,namevarchar(16));以上例子15:#在mysql中,''和null不一样createtablet3(idi......
  • python 机器学习概述
    1.1人工智能概述1.2人工智能发展历程1.图灵测试2.达特矛斯会议(1956年,人工智能元年)1.3人工智能的主要分支1.人工智能、机器学习和深度学习的关系机器学习是人工智能的一个实现途径深度学习是机器学习的一个方法发展而来2.主要分支介绍......
  • ChatGPT 问答00003 mysql中删除原来的自增ID,并重新根据字符串字段data字段排序重新生
    在MySQL中,自增ID是由MySQL引擎自动生成和维护的,通常与数据表的主键关联。删除自增ID并重新生成的需求比较特殊,因为自增ID的生成是基于数据表中已有的记录顺序的,直接删除和重新生成可能会破坏数据完整性和索引等方面的约束。不建议直接删除和重新生成自增ID,但你可以通过以下步骤实......
  • 2023Tsinghua-HKUST F <最小生成树 Prim>
    题目F.Freeway-travellingSalesman代码Code//最小生成树Prim#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<cstring>usingnamespacestd;usingLL=longlong;usingPII=pair<int,int......
  • C#开发中IronPython的使用
    目前的最新版本是:3.4.1安装Install-PackageIronPython如果需要使用标准库,则进行下面的安装Install-PackageIronPython.StdLib在C#程序中执行Python代码示例代码:vareng=IronPython.Hosting.Python.CreateEngine();varscope=eng.CreateScope();eng.Execute(@"......
  • 供应链产能受限型选址模型——Python实现
    选址问题是运筹学中非常经典的问题。选址问题是指在确定选址对象,选址目标区,成本函数以及存在何种约束条件的前提下,以总物流成本最低或总服务最优或社会效益最大化为总目标,以确定物流系统中物流节点的数量、位置,从而合理规划物流网络结构。设施选址问题(FacilityLocationProblem)自......
  • python 迭代器
    目录python迭代器迭代器python迭代器迭代器#迭代是访问集合元素的一种方式,迭代器是一个可以记住遍历位置的对象#迭代器从集合的第一个元素开始访问,直到所有的元素被访问结束#迭代器只能前进不能后退#可以被next()函数调用并不断返回下一值的对象称为迭代器Iterator......
  • 如何实现python直方图的具体操作步骤
    Python直方图直方图是数据可视化中常用的一种图形表示方式,它可以将数据按照一定的范围分成若干个区间,并统计每个区间内数据的个数。Python提供了多种库和函数来绘制直方图,使得数据分析和数据挖掘更加方便和直观。matplotlib库绘制直方图在Python中,最常用的绘图库之一就是matplot......
  • 解决python正则匹配以某汉字开头,以}结尾的具体操作步骤
    Python正则匹配以某汉字开头,以}结尾前言在文本处理过程中,我们经常需要使用正则表达式来进行模式匹配,以找到特定的文本。Python中的re模块提供了正则表达式的支持,可以应用于各种文本处理任务中。本文将介绍如何使用Python的正则表达式来匹配以某汉字开头,以}结尾的文本。正则表达......
  • python正则表达式中怎么引用变量 这个问题怎么解决?
    项目方案:使用Python正则表达式引用变量1.简介Python正则表达式是一种强大的文本处理工具,可以用于匹配、搜索、替换和验证字符串。在正则表达式中,有时候需要使用变量来引用匹配结果或者动态地构建正则表达式模式。本项目方案将介绍如何在Python正则表达式中引用变量,以及如何使用......