Greeting Card of China's Spring Festival

Hello, everyone, today is Chinese Spring Festival day.
I made a program to generate the greeting card.





video can be seen here:

code can be seen here:

import streamlit as st
import os
from PIL import Image, ImageFont, ImageDraw

st.set_page_config(page_title="虎年贺卡生成器", page_icon="🐯", layout="wide")
st.header("虎年贺卡生成器")
css = """<style>
.stDownloadButton>button {
    background-color: #0099ff;
    color:#ffffff;
}

.stDownloadButton>button:hover {
    background-color: #00ff00;
    color:#ff0000;
    }
</style>
"""
st.markdown(css, unsafe_allow_html=True)

hunian_zhufuyu = [
    "生龙活虎",	"福虎生旺",	"虎虎生威",	"虎气十足",	"龙腾虎蹴",
    "龙腾虎跃",	"生龙生虎",
    "虎变龙蒸",	"虎步龙行",	"猛虎添翼",
    "如虎生翼", "为虎傅翼",	"为虎添翼",	"虎略龙韬",	"福虎呈祥",
    "金虎旺财",	"玉虎送财",	"瑞虎运财",	"金虎纳福",	"金虎送福",	"金虎进宝",
    "灵虎送福",	"虎年大吉",	"虎兆丰年",	"虎灵虎气",
    "聪明如虎",	"虎报佳音",	"虎报吉祥",	"虎闹新春",	"金虎送喜",	"心有所虎",
    "非你莫虎",	"乐不思虎",	"虎一虎二",	"虎不胜虎",	"瑞虎迎春",
    "玉虎迎春",	"福虎迎春",	"金虎献瑞",	"金虎迎春",	"金虎闹春",	"独虎—帜",
    "玉虎l临风",	"虎能生巧",	"虎你最红",	"虎你最棒",	"虎你最美",
    "虎你最强",	"虎不胜数",	"虎啸风生", "鸿案齐眉",	"生意兴隆",	"身体健康",
    "意气风发",	"一家瑞气",	"寿比南山",	"神采奕奕",	"升官发财",	"天福华民",
    "天天开心",	"太平有象",	"教子有方",	"五星高照",	"年年有余",	"鹤寿添寿",
    "极婺联辉",	"招财有道",	"六六大顺",	"称觞祝假",	"心想事成",	"二龙腾飞",
    "岁岁平安",	"七星高照",	"顺理成章",	"鼎新革旧",	"大吉大利",	"招财进宝",
    "一帆风顺",	"财源广进",	"庆衍萱畴",	"彪炳千秋",	"随地有春",	"暖吐花唇",
    "天上双星",	"如写阳春",	"四海增辉",	"家庭和睦",	"文定吉祥",	"鱼水和谐",
    "八方捷报",	"平安是福",	"年年如意",	"大年三十",	"中华腾飞",	"猴猴生威",
    "和气生财",	"四海祥云",	"新年到来",	"步步高升",	"松柏同春",	"大展鸿图",
    "丰财聚宝",	"日新月异",	"蒸蒸日上",	"吉祥如意",	"百尺竿头",	"日月长明",
    "龙马精神",	"椿萱并茂",	"笑口常开",	"平安无恙",	"百事可乐",	"天赐纯假",
    "新年快乐",	"章月句星",	"竹报三多",	"星罗棋布",	"九如之颂",	"三星拱户",
    "万事胜意",	"金玉满堂",	"来年开心",	"松林岁月",	"全家福气",	"好事连连",
    "二气雍和",	"南山献颂",	"百家有福",	"幸福无疆",	"母仪典范",	"六畜兴旺",
    "奉觞上寿",	"大造无私",	"多财满家",	"鹤算同添",	"一本万利",	"恭喜发财",
    "福禄双星",	"三羊开泰",	"事事顺心",	"八方来财",	"豫立亨通",	"近水楼台",
    "唐虞盛世",	"野云归岫",	"双星并辉",	"造家庭福",	"鹏程万里",	"事业有成",
    "鸳鸯璧合",	"缘订三生",	"平和得福",	"欢声不断",	"威振四海",	"挥手过往",
    "欢天喜地",	"二蛇戏珠",	"双龙戏珠",	"华堂偕老",	"自强不息",	"必定如意",
    "财源滚滚",	"祝无量寿",	"家中全福",	"吉庆有余",	"晋爵延龄",	"红梅报喜",
    "泰然自若",	"松柏长青",	"四季平安",	"合家幸福",	"福如东海",	"今生快乐",
    "富贵吉祥",	"开门大吉",	"学习进步",	"花开富贵",	"寿与天齐",	"合家富贵",
    "生财有道",	"寿域同登",	"篷岛春风",	"寿城宏开",	"庆云跃日",	"好运连连",
    "凤纪书元",	"与山同静",	"八节安康",	"十全十美",	"人强马壮",	"五福临门",
    "梅占花魁",	"物化天宝",	"白梅吐艳",	"蟠桃祝寿",	"幸福快乐",	"誓约同心",
    "爱情甜甜",	"八方和协",	"平顺聚福",	"多有不便",	"五谷丰登",	"九运当头",
    "西出平安",	"四季发财",	"年年有鱼",	"天开景运",	"四时平安",	"民族崛起",
    "百花齐放",	"登峰造极",	"阳春召我",	"九九同心",	"百年好合",	"工作顺利",
    "大显身手",	"小家和睦",	"身体康健",	"惠风和畅",	"丰衣足食",	"九鼎生光",
    "乐在其中",	"花好月圆",	"万福云集",	"生龙活猴",	"平生幸福",	"平衡满福",
    "来年多赚",	"化日舒长",	"天下苍生",	"千秋伟业",	"内存正气",	"生活幸福",
    "万民交庆",	"食为民天",	"十面八方",	"合家欢乐",	"四海同心",	"天天快乐",
    "平稳保福",	"白首成约",	"四化图景",	"流翠飞红",	"盟结良缘",	"平淡见福",
    "人杰地灵",	"黄菊傲霜",	"桃开连理",	"梅柳迎春",	"喜缔鸳鸯",	"平实显福",
    "喜气洋洋",	"短信拜年",	"人间改岁",	"进取有道",	"六合之内",	"北走无忧",
    "缔结良缘",	"增奇添彩",	"平步升福",	"了我心愿",	"鸡声告旦",	"道生万物",
    "七彩缤纷",	"事业顺利",	"前有福星",	"祝你全家",	"天下皆春",	"物阜民丰",
    "八祥八瑞",	"生意蒸蒸上",	"后有靠山",	"七星捧月",	"日年偕老",	"淑气宜人",
    "大炮而红",	"庆衍箕畴",	"满院春光",	"六合同春",	"幸福安康",	"龙缠启岁",
    "家庭幸福",	"四时吉庆",	"快乐年年",	"长揾长有",	"福寿安康",	"春为岁首",
    "梅开五福",	"天地长春",	"春舍澄空",	"姻缘相配",	"身体棒棒",	"九州同庆",
    "平静有福",	"电话打搅",	"海内祥和",	"三春不老",	"八面春风",	"南走顺利",
    "三阳开泰",	"余钱多多",	"客似云来",	"百花献瑞",	"瑞雪迎春",	"马腾启岁",
    "长命百岁",	"大红大紫",	"今世平安",	"大鸣惊人",	"春暖花开",	"开开心心",
    "大马当先",	"一元复始",	"万象更新",    "海屋添寿",	"万事如意",	"万马奔腾"]

guanjianci = st.text_input("请输入您要的祝福语关键词,如“虎”", value="虎")
houxuan = []
s = [s for s in hunian_zhufuyu if guanjianci in s]
houxuan.append(s)

beijing = []
for root, dirs, files in os.walk(os.getcwd() + "\\新年祝福背景图"):
    for file in files:
        filename = os.path.join(root, file)
        beijing.append(filename)

ziti = []
for root, dirs, files in os.walk(os.getcwd() + "\\字体"):
    for file in files:
        filename = os.path.join(root, file)
        ziti.append(filename)

qianming = st.sidebar.text_input("请输入您的签名")
houxuan_ciyu = st.sidebar.multiselect("请选择候选词语", houxuan[0])
beijing_choose = st.selectbox("请选择一种背景", beijing)
ziti_choose = st.sidebar.selectbox("请选择一种字体", ziti)

img = Image.open(beijing_choose)
font = ImageFont.truetype(ziti_choose, 30, encoding="unic")
draw = ImageDraw.Draw(img)
draw.text((290, 50), qianming, fill="#ffff00", font=font)
draw.text((195, 110), "祝您及您的家人在新的一年里", fill="#ffff00", font=font)
if len(houxuan_ciyu) <= 5:
    draw.text((113, 180), "、".join(houxuan_ciyu), fill="#ffff00", font=font)
    img.save("新年贺卡.png")
    st.image("新年贺卡.png", caption="新年贺卡")
    #下载本地图片
    with open("新年贺卡.png", "rb") as file:
        btn = st.download_button(
            label="点我下载图片",
            data=file,
            file_name="新年祝福贺卡.png",
            mime="image/png"
            )
else:
    st.info("不适合一次选择太多词语")
5 Likes

WOW THIS IS SO COOL I am stealing the idea to generate birthday cards :partying_face:

1 Like