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("不适合一次选择太多词语")