批量生成海报 以及二维码

简介: 批量生成海报 以及二维码
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 23 11:52:36 2020

@author: Administrator
"""
from PIL import Image,ImageDraw,ImageFont
import random
import qrcode

def random_name():
    # 删减部分,比较大众化姓氏
    firstName = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻水云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳鲍史唐费岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅卞齐康伍余元卜顾孟平" \
                "黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计成戴宋茅庞熊纪舒屈项祝董粱杜阮席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田胡凌霍万柯卢莫房缪干解应宗丁宣邓郁单杭洪包诸左石崔吉" \
                "龚程邢滑裴陆荣翁荀羊甄家封芮储靳邴松井富乌焦巴弓牧隗山谷车侯伊宁仇祖武符刘景詹束龙叶幸司韶黎乔苍双闻莘劳逄姬冉宰桂牛寿通边燕冀尚农温庄晏瞿茹习鱼容向古戈终居衡步都耿满弘国文东殴沃曾关红游盖益桓公晋楚闫"
    # 百家姓全部姓氏
    # firstName = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平" \
    #             "黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董粱杜阮蓝闵席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯昝管卢莫经房裘缪干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮" \
    #             "龚程嵇邢滑裴陆荣翁荀羊於惠甄麴家封芮羿储靳汲邴糜松井段富巫乌焦巴弓牧隗山谷车侯宓蓬全郗班仰秋仲伊宫宁仇栾暴甘钭厉戎祖武符刘景詹束龙叶幸司韶郜黎蓟薄印宿白怀蒲邰从鄂索咸籍赖卓蔺屠蒙池乔阴欎胥能苍" \
    #             "双闻莘党翟谭贡劳逄姬申扶堵冉宰郦雍舄璩桑桂濮牛寿通边扈燕冀郏浦尚农温别庄晏柴瞿阎充慕连茹习宦艾鱼容向古易慎戈廖庾终暨居衡步都耿满弘匡国文寇广禄阙东殴殳沃利蔚越夔隆师巩厍聂晁勾敖融冷訾辛阚那简饶空" \
    #             "曾毋沙乜养鞠须丰巢关蒯相查後荆红游竺权逯盖益桓公晋楚闫法汝鄢涂钦归海帅缑亢况后有琴梁丘左丘商牟佘佴伯赏南宫墨哈谯笪年爱阳佟言福百家姓终"
    # 百家姓中双姓氏
    firstName2="万俟司马上官欧阳夏侯诸葛闻人东方赫连皇甫尉迟公羊澹台公冶宗政濮阳淳于单于太叔申屠公孙仲孙轩辕令狐钟离宇文长孙慕容鲜于闾丘司徒司空亓官司寇仉督子颛孙端木巫马公西漆雕乐正壤驷公良拓跋夹谷宰父谷梁段干百里东郭南门呼延羊舌微生梁丘左丘东门西门南宫南宫"
    # 女孩名字
    girl = '秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽'
    # 男孩名字
    boy = '伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘'
    # 名
    name = '中笑贝凯歌易仁器义礼智信友上都卡被好无九加电金马钰玉忠孝'
 
    # 10%的机遇生成双数姓氏
    if random.choice(range(100))>10:
        firstName_name =firstName[random.choice(range(len(firstName)))]
    else:
        i = random.choice(range(len(firstName2)))
        firstName_name =firstName2[i:i+2]
 
    sex = random.choice(range(2))
    name_1 = ""
    # 生成并返回一个名字
    if sex > 0:
        girl_name = girl[random.choice(range(len(girl)))]
        if random.choice(range(2)) > 0:
            name_1 = name[random.choice(range(len(name)))]
        return firstName_name + name_1 + girl_name
    else:
        boy_name = boy[random.choice(range(len(boy)))]
        if random.choice(range(2)) > 0:
            name_1 = name[random.choice(range(len(name)))]
        return firstName_name + name_1 + boy_name
 
 
def creat_qr(str_href,path):
    """
    选做:为每位同学的海报制作成二维码
    所需参数:海报存放的地址,以及生成的路径
    """
    img = qrcode.make(str_href)
    img.save(path+".png")


def add_text(name):
    """
    为毕业证上添加姓名
    """
    #打开原始照片
    path="poster.jpg"
    img=Image.open(path)
    
    # 设置字体
    draw = ImageDraw.Draw(img)
    font_medium_type = 'C:\Windows\Fonts\STXINWEI.TTF'    
    font = ImageFont.truetype(font_medium_type,50)  # 设置字体

    #让字体在正确的位置居中显示
    font_width, font_height = draw.textsize(name, font)
    draw.text((210+(70 - font_width-font.getoffset(name)[0]) / 2, 290+(10 - font_height-font.getoffset(name)[1]) / 2), name, '#6699ff',font)

    #保存照片
    path="picture/"+name+".png"
    print(path)
    img.save(path)
    img.close()
    return


    
def main():
    """
    主函数
    """
    try:
        #准备数据:准备不重名的1000个数据
        counts=1000
        name_arr=[]
        n=0
        while n < counts:
            name=random_name()
            if name not in name_arr:
                name_arr.append(name)
                n+=1
                
        print("创建不重名的数据量为:",len(set(name_arr)))
        
        for i in range(counts):
            add_text(name_arr[i])
            pass
    except:
        print("程序报错,程序结束")

    

if __name__ == "__main__":
    main()
相关文章
|
11月前
|
存储 监控 安全
RFID固定资产管理
RFID(射频识别)技术为现代企业固定资产管理提供了创新解决方案。相比传统人工管理方式,RFID技术通过标签与阅读器实现资产快速、精准识别,大幅提升管理效率与准确性。它在资产采购、入库、日常管理、盘点及折旧报废等环节均有广泛应用,帮助企业降低丢失率、优化资源配置并增强竞争力。尽管存在成本和技术标准等挑战,但随着物联网、大数据等技术融合,RFID固定资产管理将更智能化,助力企业高质量发展。
|
11月前
|
人工智能 缓存 安全
首发,Higress AI 网关率先支持 QwQ-32B,推理成本可再降 90%
QwQ-32B 是一款拥有 320 亿参数的大模型,性能媲美 6710 亿参数的 DeepSeek-R1。它支持本地运行、显著降低企业调用成本(最高降 90%),并在 Hugging Face 和 ModelScope 开源。本文提供通过 Higress AI 网关实现 DeepSeek-R1 和 QwQ-32B 无缝切换的教程,涵盖环境准备、模型接入配置及客户端调用示例。Higress AI 网关还具备消费者鉴权、模型自动切换、Token 级限流等进阶功能,助力企业高效管理多模型服务。
540 1
|
存储 人工智能 缓存
DiffSplat:输入文本或图像,2秒内生成3D建模!北大联合字节开源3D建模生成框架
DiffSplat 是由北京大学和字节跳动联合推出的一个高效 3D 生成框架,能够在 1-2 秒内从文本提示或单视图图像生成高质量的 3D 高斯点阵,并确保多视图下的一致性。
695 19
DiffSplat:输入文本或图像,2秒内生成3D建模!北大联合字节开源3D建模生成框架
|
机器学习/深度学习 自然语言处理 算法
Adam优化算法和应用场景
Adam(Adaptive Moment Estimation)是一种用于训练深度学习模型的优化算法
1158 2
|
前端开发 芯片 索引
技术好文共享:色彩之RGB和灰阶
技术好文共享:色彩之RGB和灰阶
1735 0
|
NoSQL Linux C语言
GDB:强大的GNU调试器
GDB:强大的GNU调试器
406 0
|
安全
shtml与html的区别
shtml与html的区别
|
人工智能 Oracle 数据可视化
低代码开发平台权威推荐:创新开发、领跑市场!
Gartner推荐的6款低代码平台包括Zoho Creator、Mendix、Oracle、Appian、Retool和Quickbase。Zoho Creator在低代码领域有显著地位,连续多年入选Gartner魔力象限,其特点是快速定制、灵活的定制能力、AI辅助、合规与安全以及丰富的报表功能。Mendix则是一站式低代码平台,强调可视化开发和数据集成,但学习曲线较陡。Oracle平台提供预构建组件,快速开发且支持可视化,但私有部署选项有限。Appian以拖拽式构建和流程自动化为亮点,但可能无法满足所有高度定制需求。Retool以其强大的组件库和主流服务集成吸引用户,
438 0
|
设计模式 缓存 算法
必知必会的22种设计模式(GO语言)
必知必会的22种设计模式(GO语言)
739 1
|
算法 芯片
DNA测序原理:illumina和Pacbio对比介绍
DNA测序原理:illumina和Pacbio对比介绍

热门文章

最新文章