春联生成模型-中文-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主要做三件事生成春联图片。将图片保存到一个可通过网络访问的临时地址。生成一个对应的二维码图片并返回给前端。这里我们使用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_okTrue) 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, fontfont_medium) h_width h_bbox[2] - h_bbox[0] draw.text(((img_width - h_width)//2, 100), horizontal, filltext_color, fontfont_medium) # 绘制上联右侧 u_bbox draw.textbbox((0, 0), upper, fontfont_large) u_width u_bbox[2] - u_bbox[0] draw.text((img_width - u_width - 100, 400), upper, filltext_color, fontfont_large) # 绘制下联左侧 l_bbox draw.textbbox((0, 0), lower, fontfont_large) l_width l_bbox[2] - l_bbox[0] draw.text((100, 400), lower, filltext_color, fontfont_large) # 在底部添加祝福词和水印 draw.text((50, img_height - 150), f祝福词{keyword}, fill(255, 255, 255), fontfont_small) draw.text((50, img_height - 100), f生成时间{datetime.datetime.now().strftime(%Y-%m-%d %H:%M)}, fill(255, 255, 255), fontfont_small) draw.text((img_width-300, img_height - 100), AI春联生成, fill(255, 255, 255), fontfont_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 fhttp://你的服务器公网IP:7860/static/{image_filename} qr qrcode.QRCode( version1, error_correctionqrcode.constants.ERROR_CORRECT_L, box_size10, border4, ) qr.add_data(image_url) qr.make(fitTrue) qr_img qr.make_image(fill_colorblack, back_colorwhite) qr_filename fqr_{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_okTrue) # 创建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(生成春联与图片, variantprimary) 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春联效果图, typefilepath) # 显示下载二维码图片 qrcode_output gr.Image(label微信扫码下载图片, typefilepath) gr.Markdown(### 使用说明) gr.Markdown(1. 输入两个字的祝福词。\n2. 点击按钮生成春联。\n3. 右侧会显示生成的春联文本。\n4. 下方会显示春联效果图和对应的下载二维码。\n5. 用手机微信扫描二维码即可下载高清春联图片。) submit_btn.click( fngenerate_couplet_with_image, inputskeyword_input, outputs[upper_output, lower_output, horizontal_output, image_output, qrcode_output] ) # 启动应用时将临时图片目录设置为静态文件路径 app demo.app app.mount(/static, StaticFiles(directorySTATIC_DIR), namestatic) if __name__ __main__: # 注意在局域网或公网访问时需要设置 server_name0.0.0.0 demo.launch(server_name0.0.0.0, server_port7860)代码关键点解释create_couplet_image函数这个函数负责把文字变成图片。它创建一张红色背景的图用金色字体写上春联还在底部加了祝福词和时间水印看起来就像真的春联红纸。create_download_qrcode函数这个函数为生成的春联图片链接创建一个二维码。手机一扫就能直接访问图片地址。静态文件服务 (app.mount): 这是最关键的一步。它把存放图片的临时目录/tmp/spring_couplet_images挂载到了Web服务的/static路径下。这样生成的图片就能通过http://你的IP:7860/static/图片名.png这个地址被访问到二维码里存的也是这个地址。界面输出Gradio 的gr.Image组件可以直接显示图片。我们让函数返回图片的本地路径Gradio会自动加载并显示。重要提醒你需要将代码中的http://你的服务器公网IP:7860替换成你实际的服务访问地址。确保系统中有中文字体文件如文泉驿微米黑否则文字可能显示为方框。你可以通过fc-list :langzh命令查看系统中已安装的中文字体。3.2 配置与运行修改完代码后再次运行应用python3 app.py现在打开浏览器访问界面你会发现界面变了。输入祝福词点击生成后不仅能看到文字还能在下方看到一张红色的春联效果图以及一个对应的二维码。4. 使用效果与场景这个增强版的功能让AI春联生成器的实用性大大提升。4.1 实际效果展示当你输入“团圆”并点击生成后界面会同时提供文本春联可以直接复制的上下联和横批文字。春联效果图一张模拟传统竖版红纸金字的图片视觉效果直接拉满。下载二维码用手机微信扫一扫这个二维码浏览器就会打开春联图片可以长按保存到手机相册。整个过程从“想法”到“可打印的图片”一分钟内全部完成。4.2 应用场景举例这个工具可以用在很多地方个人家庭生成独一无二的专属春联打印出来贴在家门口比买来的更有意义。公司活动企业年会、门店开业输入“兴旺”、“发财”等词批量生成带有公司特色的春联用于装饰或作为小礼品。社交媒体生成带有吉祥话的精致春联图片配上二维码分享到朋友圈、微信群送上科技感十足的新年祝福。文化体验对于想了解春联文化的外国朋友这是一个有趣且直观的互动方式。5. 总结通过这个实例我们完成了一个AI春联生成模型从基础使用到功能增强的完整过程。核心步骤包括环境搭建准备好模型和Python环境一键启动服务。基础使用输入二字词获取AI生成的工整春联。功能增强通过编写绘图和二维码生成代码将文字输出升级为可视化的、便于传播下载的图片服务。这个项目的价值在于它把前沿的大模型技术变成了一个触手可及、趣味性强的实用工具。代码修改的部分主要集中在图片生成和Web服务配置上逻辑清晰非常适合作为学习Gradio应用开发、模型服务化的小项目。你可以在此基础上继续发挥比如让春联的字体、背景样式可选或者添加更多节日装饰元素。希望这个例子能给你带来启发也祝你能用自己生成的春联过一个更有创意的新年获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。