当前位置: 首页 > news >正文

春联生成模型-中文-base代码实例:添加微信扫码下载高清春联图

春联生成模型-中文-base代码实例:添加微信扫码下载高清春联图

过年贴春联,是咱们中国人最重要的年俗之一。但每年想一副既应景又有新意的对联,是不是挺费脑筋的?要么是“年年有余”太老套,要么自己编的词儿对仗不工整。

今天给大家介绍一个特别有意思的工具——春联生成模型。你只需要输入两个字的祝福词,比如“健康”、“发财”、“团圆”,它就能在几秒钟内,为你生成一副对仗工整、寓意吉祥的春联。更棒的是,生成的春联还能一键保存为高清图片,方便你打印出来直接贴门上,或者分享给亲朋好友。

这篇文章,我就手把手带你把这个AI春联生成器跑起来,并且教你如何添加一个实用的功能:微信扫码下载生成的高清春联图。整个过程非常简单,哪怕你是刚接触Python的新手,也能轻松搞定。

1. 环境准备与快速启动

首先,我们需要把项目跑起来。这个项目基于达摩院的PALM大模型,用Gradio做了一个非常简洁的网页界面。

1.1 获取代码与模型

假设你已经有了项目代码。关键一步是确保模型文件已经放在正确的位置。根据说明,模型需要预先放置在以下目录:/root/ai-models/iic/spring_couplet_generation

如果你的模型不在这个路径,需要先下载并放置好。通常模型文件比较大,确保你的磁盘空间足够。

1.2 安装依赖

项目根目录下会有一个requirements.txt文件,里面列出了所有需要的Python库。我们使用pip来安装它们。

打开终端,进入项目目录,运行下面的命令:

pip install -r requirements.txt

这个命令会自动安装 Gradio、ModelScope 以及其他必要的依赖包。如果安装过程比较慢,可以考虑使用国内的镜像源,比如清华源。

1.3 启动应用

依赖安装好后,启动应用就非常简单了。项目提供了两种方式:

方式一:使用启动脚本(推荐)如果你的项目里有一个start.sh文件,直接运行它就行,通常脚本里已经设置好了环境。

chmod +x start.sh # 如果是第一次运行,先给脚本添加执行权限 ./start.sh

方式二:直接运行Python程序你也可以直接运行主程序文件。

python3 /root/spring_couplet_generation/app.py

当你在终端看到类似Running on local URL: http://0.0.0.0:7860的输出时,就说明服务已经成功启动了。

1.4 访问界面

打开你的网页浏览器,在地址栏输入:http://localhost:7860

如果服务运行在远程服务器上,就把localhost换成服务器的IP地址。顺利的话,你就能看到一个简洁的网页界面,上面有输入框和提交按钮,我们的AI春联生成器就准备就绪了。

2. 基础使用:生成你的第一副AI春联

界面启动后,使用起来非常直观,完全不需要任何技术背景。

2.1 输入祝福词

在页面的输入框里,想想今年最想祝愿什么,然后输入两个字的词语。比如:

  • 传统吉祥类:如意、平安、福寿、吉祥
  • 事业财运类:发财、兴旺、腾飞、顺遂
  • 家庭生活类:团圆、和睦、安康、喜乐
  • 应景年份类:兔年、龙年、新春、佳节

小技巧:尽量选择寓意明确、积极的词语,这样模型生成的春联主题会更集中,效果也更好。

2.2 生成与复制

输入完祝福词后,点击“提交”按钮。稍等片刻,通常一两秒钟,下方就会显示出生成的上联、下联和横批。

例如,输入“健康”,可能会生成:

  • 上联:身体健康如松柏
  • 下联:精神愉快似春风
  • 横批:福寿安康

生成的结果旁边会有一个“复制”按钮,点击一下,整副春联就复制到你的剪贴板了,可以直接粘贴到任何地方。

3. 功能增强:添加微信扫码下载图片功能

现在的基础功能已经很好用了,但如果我们想把生成的精美春联保存下来,打印张贴或者发朋友圈,只有文字就不够方便。下面我们来增强它,添加一个功能:将生成的春联文字,渲染成一张美观的图片,并生成一个微信扫码即可下载的链接。

3.1 修改后端代码 (app.py)

我们需要修改主程序app.py,主要做三件事:

  1. 生成春联图片。
  2. 将图片保存到一个可通过网络访问的临时地址。
  3. 生成一个对应的二维码图片,并返回给前端。

这里我们使用PIL(Python Imaging Library) 来绘图,用qrcode库来生成二维码。

首先,确保安装了必要的库:

pip install Pillow qrcode

然后,我们修改app.py的生成函数。以下是关键部分的代码示例:

import gradio as gr from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks import os from PIL import Image, ImageDraw, ImageFont import qrcode import datetime import uuid # 初始化模型管道 pipe = pipeline(Tasks.text_generation, 'damo/spring_couplet_generation') # 字体路径,请确保你系统中有这个字体文件,或者替换为其他中文字体路径 FONT_PATH = "/usr/share/fonts/truetype/wqy/wqy-microhei.ttc" # 临时图片存储目录 TEMP_IMG_DIR = "/tmp/spring_couplet_images" os.makedirs(TEMP_IMG_DIR, exist_ok=True) def generate_couplet_with_image(keyword): """生成春联并创建图片""" if not keyword or len(keyword.strip()) != 2: return "请输入两个字的祝福词", "", "", None, None keyword = keyword.strip() # 调用模型生成春联文本 result = pipe(keyword) # 假设返回结果是一个包含上联、下联、横批的字典或列表,这里根据实际模型输出调整 # 例如: result = {'上联': '...', '下联': '...', '横批': '...'} # 以下为示例数据,请替换为实际解析逻辑 upper_line = result.get('上联', f'{keyword}临门万事兴') # 示例 lower_line = result.get('下联', f'平安接福全家欢') # 示例 horizontal = result.get('横批', f'{keyword}如意') # 示例 # 1. 生成春联图片 couplet_image_path = create_couplet_image(upper_line, lower_line, horizontal, keyword) # 2. 生成该图片的下载二维码 qr_code_path = create_download_qrcode(couplet_image_path) # 返回文本结果和两个图片的路径(Gradio可以自动显示) return upper_line, lower_line, horizontal, couplet_image_path, qr_code_path def create_couplet_image(upper, lower, horizontal, keyword): """创建春联图片""" # 图片尺寸(竖版春联样式) img_width, img_height = 600, 1800 # 创建红色背景图片(春联传统红纸) image = Image.new('RGB', (img_width, img_height), color=(200, 30, 30)) draw = ImageDraw.Draw(image) try: font_large = ImageFont.truetype(FONT_PATH, 80) font_medium = ImageFont.truetype(FONT_PATH, 60) font_small = ImageFont.truetype(FONT_PATH, 40) except: # 如果指定字体不存在,使用默认字体(可能不支持中文) font_large = font_medium = font_small = ImageFont.load_default() # 绘制金色文字(春联传统金字) text_color = (255, 215, 0) # 金色 # 计算文字位置并绘制 # 绘制横批 h_bbox = draw.textbbox((0, 0), horizontal, font=font_medium) h_width = h_bbox[2] - h_bbox[0] draw.text(((img_width - h_width)//2, 100), horizontal, fill=text_color, font=font_medium) # 绘制上联(右侧) u_bbox = draw.textbbox((0, 0), upper, font=font_large) u_width = u_bbox[2] - u_bbox[0] draw.text((img_width - u_width - 100, 400), upper, fill=text_color, font=font_large) # 绘制下联(左侧) l_bbox = draw.textbbox((0, 0), lower, font=font_large) l_width = l_bbox[2] - l_bbox[0] draw.text((100, 400), lower, fill=text_color, font=font_large) # 在底部添加祝福词和水印 draw.text((50, img_height - 150), f"祝福词:{keyword}", fill=(255, 255, 255), font=font_small) draw.text((50, img_height - 100), f"生成时间:{datetime.datetime.now().strftime('%Y-%m-%d %H:%M')}", fill=(255, 255, 255), font=font_small) draw.text((img_width-300, img_height - 100), "AI春联生成", fill=(255, 255, 255), font=font_small) # 保存图片 filename = f"{keyword}_{uuid.uuid4().hex[:8]}.png" filepath = os.path.join(TEMP_IMG_DIR, filename) image.save(filepath, 'PNG') return filepath def create_download_qrcode(image_path): """为图片生成下载二维码""" # 这里假设你的服务可以通过某个固定URL访问到图片 # 例如: http://你的服务器IP:7860/static/couplet_images/文件名.png # 你需要根据实际部署情况调整这个URL的生成逻辑。 # 本例简单使用一个假设的公共可访问路径,实际部署时需要配置静态文件服务。 image_filename = os.path.basename(image_path) # 这是一个示例URL,你需要替换为你的图片实际可访问地址 image_url = f"http://你的服务器公网IP:7860/static/{image_filename}" qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4, ) qr.add_data(image_url) qr.make(fit=True) qr_img = qr.make_image(fill_color="black", back_color="white") qr_filename = f"qr_{image_filename}" qr_filepath = os.path.join(TEMP_IMG_DIR, qr_filename) qr_img.save(qr_filepath) return qr_filepath # 设置Gradio静态文件服务,使图片可被访问(非常重要!) # 这允许通过 http://localhost:7860/static/文件名 访问图片 STATIC_DIR = TEMP_IMG_DIR os.makedirs(STATIC_DIR, exist_ok=True) # 创建Gradio界面 with gr.Blocks() as demo: gr.Markdown("# 🏮 AI 春联生成器(增强版)") gr.Markdown("输入两个字的祝福词,生成专属春联,并支持下载高清图片。") with gr.Row(): with gr.Column(): keyword_input = gr.Textbox(label="请输入两个字的祝福词(如:健康、发财)", placeholder="例如:如意") submit_btn = gr.Button("生成春联与图片", variant="primary") with gr.Column(): upper_output = gr.Textbox(label="上联") lower_output = gr.Textbox(label="下联") horizontal_output = gr.Textbox(label="横批") with gr.Row(): # 显示生成的春联图片 image_output = gr.Image(label="春联效果图", type="filepath") # 显示下载二维码图片 qrcode_output = gr.Image(label="微信扫码下载图片", type="filepath") gr.Markdown("### 使用说明") gr.Markdown("1. 输入两个字的祝福词。\n2. 点击按钮生成春联。\n3. 右侧会显示生成的春联文本。\n4. 下方会显示春联效果图和对应的下载二维码。\n5. 用手机微信扫描二维码即可下载高清春联图片。") submit_btn.click( fn=generate_couplet_with_image, inputs=keyword_input, outputs=[upper_output, lower_output, horizontal_output, image_output, qrcode_output] ) # 启动应用时,将临时图片目录设置为静态文件路径 app = demo.app app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static") if __name__ == "__main__": # 注意:在局域网或公网访问时,需要设置 server_name='0.0.0.0' demo.launch(server_name="0.0.0.0", server_port=7860)

代码关键点解释:

  1. create_couplet_image函数:这个函数负责把文字变成图片。它创建一张红色背景的图,用金色字体写上春联,还在底部加了祝福词和时间水印,看起来就像真的春联红纸。
  2. create_download_qrcode函数:这个函数为生成的春联图片链接创建一个二维码。手机一扫就能直接访问图片地址。
  3. 静态文件服务 (app.mount): 这是最关键的一步。它把存放图片的临时目录(/tmp/spring_couplet_images)挂载到了Web服务的/static路径下。这样,生成的图片就能通过http://你的IP:7860/static/图片名.png这个地址被访问到,二维码里存的也是这个地址。
  4. 界面输出:Gradio 的gr.Image组件可以直接显示图片。我们让函数返回图片的本地路径,Gradio会自动加载并显示。

重要提醒

  • 你需要将代码中的http://你的服务器公网IP:7860替换成你实际的服务访问地址。
  • 确保系统中有中文字体文件(如文泉驿微米黑),否则文字可能显示为方框。你可以通过fc-list :lang=zh命令查看系统中已安装的中文字体。

3.2 配置与运行

修改完代码后,再次运行应用:

python3 app.py

现在,打开浏览器访问界面,你会发现界面变了。输入祝福词点击生成后,不仅能看到文字,还能在下方看到一张红色的春联效果图,以及一个对应的二维码。

4. 使用效果与场景

这个增强版的功能,让AI春联生成器的实用性大大提升。

4.1 实际效果展示

当你输入“团圆”并点击生成后,界面会同时提供:

  1. 文本春联:可以直接复制的上下联和横批文字。
  2. 春联效果图:一张模拟传统竖版红纸金字的图片,视觉效果直接拉满。
  3. 下载二维码:用手机微信扫一扫这个二维码,浏览器就会打开春联图片,可以长按保存到手机相册。

整个过程从“想法”到“可打印的图片”,一分钟内全部完成。

4.2 应用场景举例

这个工具可以用在很多地方:

  • 个人家庭:生成独一无二的专属春联,打印出来贴在家门口,比买来的更有意义。
  • 公司活动:企业年会、门店开业,输入“兴旺”、“发财”等词,批量生成带有公司特色的春联,用于装饰或作为小礼品。
  • 社交媒体:生成带有吉祥话的精致春联图片,配上二维码,分享到朋友圈、微信群,送上科技感十足的新年祝福。
  • 文化体验:对于想了解春联文化的外国朋友,这是一个有趣且直观的互动方式。

5. 总结

通过这个实例,我们完成了一个AI春联生成模型从基础使用到功能增强的完整过程。核心步骤包括:

  1. 环境搭建:准备好模型和Python环境,一键启动服务。
  2. 基础使用:输入二字词,获取AI生成的工整春联。
  3. 功能增强:通过编写绘图和二维码生成代码,将文字输出升级为可视化的、便于传播下载的图片服务。

这个项目的价值在于,它把前沿的大模型技术,变成了一个触手可及、趣味性强的实用工具。代码修改的部分主要集中在图片生成和Web服务配置上,逻辑清晰,非常适合作为学习Gradio应用开发、模型服务化的小项目。

你可以在此基础上继续发挥,比如让春联的字体、背景样式可选,或者添加更多节日装饰元素。希望这个例子能给你带来启发,也祝你能用自己生成的春联,过一个更有创意的新年!


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

http://www.jsqmd.com/news/596619/

相关文章:

  • 从‘灯光消失’聊起:深入理解Unity URP的Per Object Lighting机制
  • 第八篇:OFIRM 之 统一场论(V1.1)本来我多日前都说,我只想做个杨振宁先生就行了,基础架构有了,无数的珍珠,留给别人去捡,岂不美哉!奈何,世人质疑,那就把之前的拿出来,校对下,发出。
  • 冠融的EPM方法论:不卖软件,只帮你选对+落地 - 冠融盈科
  • QQ音乐加密文件自由播放全攻略:qmcdump工具深度应用指南
  • 如何快速恢复OpenLens节点和Pod菜单:完整安装教程
  • GLM-4v-9b升级指南:从基础部署到微调训练,完整进阶路径
  • OpenClaw应急响应:用SecGPT-14B自动化处置安全事件
  • 3个关键步骤:SteamAutoCrack实现DRM解除与游戏自由运行全指南
  • SecGPT-14B提示工程:提升OpenClaw安全任务准确率的5个模板
  • 36.Acwing基础课第840题-简单-模拟散列表
  • CogVideoX-2b使用指南:高效调用GPU算力生成连贯视频
  • 5分钟掌握:终极地图填充插件的完整指南
  • 如何用Pine Script消除交易策略开发的技术门槛?从手动交易到自动化的实战指南
  • 从零开始玩转nanobot:超轻量AI助手部署、使用与进阶技巧
  • 2026年全国多层牛皮纸袋服务商排名,高性价比品牌推荐 - 工业品网
  • 从比赛项目到毕业设计:我是如何把一个苍穹平台的智慧图书馆Demo打磨成型的
  • 2026年北京靠谱代账公司排名,能做财务管理架构设计的推荐哪家 - myqiye
  • 当华硕笔记本性能与散热冲突时,如何用GHelper实现精准控制?
  • 新手入门:在快马平台用基础代码实现个人EndNote
  • 让星露谷物语模组世界为你打开:SMAPI模组加载器完全指南
  • AI辅助开发网络安全系统:让快马平台生成智能流量异常检测模型代码
  • 问题确实追问是SFT vs workflow
  • 3天从零到精通:录播姬全方位实战指南
  • 能做研发费归集的代理记账公司价格,泽创企服收费合理吗 - mypinpai
  • VMware虚拟机安装教程:本地搭建国风模型开发测试环境
  • Qwen3.5-2B算法学习伴侣:动态图解与代码实现一键生成
  • 风电光伏功率预测:从准确率竞争走向可信度竞争,行业真正的分水岭来了
  • 遗传算法实战:从数学建模到MATLAB优化实现
  • 生成式AI用户达21.7亿:重塑公共认知背后的隐忧与挑战
  • # 混合造粒机厂家实力推荐:化工粉体高效生产选型指南