用【文心一言】DIY自己的中秋明信片

简介: 用【文心一言】DIY自己的中秋明信片

一、我的中秋明信片


项目地址:用【文心一言】DIY自己的中秋明信片 aistudio.baidu.com/projectdeta…


1.思路


  • sd生成中秋图片
  • 文心一言生成中秋祝福
  • 合并中秋图、祝福语

2.效果图


1696848050507.jpg

image.jpeg

image.jpeg


二、环境设置


  • ppdiffusers
  • aistudio
  • gradio
  • langchain
  • llama-index
  • omegaconf
  • nltk
%%capture
!pip install -r requirements.txt


三、素材生成


1.prompt翻译


from tools import translate_prompt, magic_prompt
translated = translate_prompt("广州的高楼大厦,夜晚,中秋节,月饼, 月亮,孤独的一个人")
translated
'"Guangzhou\'s tall buildings at night, Mid-Autumn Festival, Mooncake, Moon, lonely person"'


2.文生图


import sd
# 中秋,4k,光线追踪
prompt = translated+ ", 4K, ray tracing"
image = sd.imagine(prompt)
image
100%|██████████| 25/25 [00:06<00:00,  3.62it/s]

1696848178114.jpg

# 保存处理后的图片  
image.save('background.jpg')
image.size
(1200, 800)


3.中秋祝福语生成


import aistudio
send_messages = [{
    "role": "user",
    "content": "我的家乡在陕西,中秋节特别思念家乡的亲人,请帮我生成中秋节日祝福五言绝句"
}]
chat = aistudio.chat.create(
    messages=send_messages
)
bot_message = chat.result
bot_message
'月明故乡思,\n乡愁在心间。\n亲人在眼前,\n祝福寄千里。'


4.过滤标点符号


# 过滤标点
import re  
# 使用正则表达式删除句号和逗号  
bot_message = re.sub(r',|\。', '', bot_message)  
print(bot_message)
月明故乡思
乡愁在心间
亲人在眼前
祝福寄千里


四、明信片合成


from PIL import Image, ImageDraw, ImageFont
def combine_text_with_image(text, image_path, output_path,font_size, x, y):
    # Load the image
    image = Image.open(image_path)
    # Create a draw object
    draw = ImageDraw.Draw(image)
    # Load the font
    font = ImageFont.truetype("叶根友毛笔行书.ttf", font_size)  # You can change the font to any other font you have
    # Calculate the text size
    _, _, text_width, text_height = draw.textbbox((0, 0), text=text, font=font)
    # Set the position of the texts
    x = x
    y = y
    # Add the text to the image
    draw.text((x, y), text, font=font, fill="white")
    # Save the combined image
    image.save(output_path)
combine_text_with_image(bot_message, "background.jpg", "combined_image.jpg", font_size=60,x=10, y=10)
combine_text_with_image('海上生明月,天涯共此时\n我在星河社区祝福大家中秋快乐!', "combined_image.jpg", "combined_image2.jpg",font_size=40, x=600, y=700)


五、gradio 部署


1.创建gradio部署文件


好多第一次使用的经常问到怎么部署?那截图来了

1696848337480.jpg

然后就会创建出事代码

#该应用创建工具共包含三个区域,顶部工具栏,左侧代码区,右侧交互效果区,其中右侧交互效果是通过左侧代码生成的,存在对照关系。
#顶部工具栏:运行、保存、新开浏览器打开、实时预览开关,针对运行和在浏览器打开选项进行重要说明:
#[运行]:交互效果并非实时更新,代码变更后,需点击运行按钮获得最新交互效果。
#[在浏览器打开]:新建页面查看交互效果。
#以下为应用创建工具的示例代码
import gradio as gr
def quickstart(name):
    return "欢迎使用BML CodeLab应用创建工具Gradio, " + name + "!!!"
demo = gr.Interface(fn=quickstart, inputs="text", outputs="text")
demo.launch()


2.撰写部署文件


# 1.安装依赖
import os
os.system("python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/")
import gradio as gr
import sd
from PIL import Image, ImageDraw, ImageFont
from tools import translate_prompt, magic_prompt
import sd
import aistudio
# 过滤标点
import re  
# 2.图片生成
def generate_pic(prompt):
    # prompt翻译
    translated = translate_prompt(prompt)
    # 4k,光线追踪
    prompt = translated+ ", 4K, ray tracing"
    image = sd.imagine(prompt)
    # 保存处理后的图片  
    image.save('background.jpg')
    return 'background.jpg'
# 3.祝福语生成
def generate_5jueju(prompt):
    send_messages = [{
        "role": "user",
        "content": "我的家乡在陕西,中秋节特别思念家乡的亲人,请帮我生成中秋节日祝福五言绝句"
    }]
    chat = aistudio.chat.create(
        messages=send_messages
    )
    bot_message = chat.result
    return bot_message
# 4.合并图片及文字
def combine_text_with_image(text, image_path, output_path,font_size, x, y):
    # Load the image
    image = Image.open(image_path)
    # Create a draw object
    draw = ImageDraw.Draw(image)
    # Load the font
    font = ImageFont.truetype("叶根友毛笔行书.ttf", font_size)  # You can change the font to any other font you have
    # Calculate the text size
    _, _, text_width, text_height = draw.textbbox((0, 0), text=text, font=font)
    # Set the position of the texts
    x = x
    y = y
    # Add the text to the image
    draw.text((x, y), text, font=font, fill="white")
    # Save the combined image
    image.save(output_path)
# 5.合并文字和图片
def generate(prompt1, prompt2):
    pic=generate_pic(prompt1)
    jueju5=generate_5jueju(prompt2)   
    # 使用正则表达式删除句号和逗号  
    jueju5 = re.sub(r',|\。', '', jueju5)
    combine_text_with_image(jueju5, "background.jpg", "combined_image.jpg", font_size=60,x=10, y=10)
    combine_text_with_image('海上生明月,天涯共此时\n我在星河社区祝福大家中秋快乐!', "combined_image.jpg", "combined_image2.jpg",font_size=40, x=600, y=700)
    return "combined_image2.jpg"
examples =  [
            ["北京的写字间,打工人在加班,桌上阅兵,窗外明亮的月亮","我的家乡在陕西,中秋节特别思念家乡的亲人,请帮我生成中秋节日祝福五言绝句"],
            ["广州的高楼大厦,夜晚,中秋节,月饼, 月亮,孤独的一个人","我的家乡在陕西,中秋节特别思念家乡的亲人,请帮我生成中秋节日祝福五言绝句"],
            ["关中平原,一望无际的玉米地,农家小院丰盛的晚餐,阅兵,月亮","我的家乡在陕西,中秋节特别思念家乡的亲人,请帮我生成中秋节日祝福五言绝句"]
            ]
# 6.gradio部署
demo=gr.Interface(
    fn=generate,
    inputs=[gr.inputs.Textbox(lines=5, label="场景描述输入"), 
            gr.inputs.Textbox(lines=5, label="诗词描述输入"),],
    outputs=gr.Image(label="明信片输出"),
    examples=examples
)
# 7.启动项目
demo.launch()


六、项目地址


用【文心一言】DIY自己的中秋明信片 aistudio.baidu.com/projectdeta…


目录
打赏
0
0
0
0
20
分享
相关文章
在阿里云RDS(Relational Database Service)进行跨区域迁移
在阿里云RDS(Relational Database Service)进行跨区域迁移
300 2
使用Visual Basic进行Windows窗体开发
【4月更文挑战第27天】本文介绍了使用Visual Basic进行Windows窗体(WinForms)开发的步骤,从搭建开发环境到创建、设计用户界面,再到编写事件驱动的代码和数据绑定。Visual Basic结合WinForms提供了一种易学易用的桌面应用开发方案。通过调试、优化、部署和维护,开发者可以构建专业应用程序。随着技术发展,掌握最新UI设计和开发工具对于保持竞争力至关重要。本文为初学者提供了基础指导,鼓励进一步探索和学习。
361 0
DingTalk「开发者说」钉钉工作台-业务数字化转型第一门户
钉钉把工作台定义为业务数字化转型门户,从钉钉目前工作台的业务体量、用户量及评价来讲,都应该承担企业数字化转型的重要责。
1514 0
DingTalk「开发者说」钉钉工作台-业务数字化转型第一门户
阿里云服务器续费流程及续费优惠券使用介绍(2023更新)
阿里云服务器怎么续费?新老用户分别有什么优惠?目前新用户续费阿里云服务器指定ECS实例可享4.5折优惠折扣,老用户开通包年自动续费享1次6.5折,开通包月自动续费享3次7.5折,现在续费还可以领取和使用阿里云续费优惠券,本文为大家介绍一下阿里云服务器续费流程及续费过程中如何使用续费优惠券。
5966 0
阿里云服务器续费流程及续费优惠券使用介绍(2023更新)
C++框架设计中实现可扩展性的方法
在软件开发中,可扩展性至关重要,尤其对于C++这样的静态类型语言。本文探讨了在C++框架设计中实现可扩展性的方法:1) 模块化设计降低耦合;2) 使用继承和接口实现功能扩展;3) 通过插件机制动态添加功能;4) 利用模板和泛型提升代码复用;5) 遵循设计原则和最佳实践;6) 应用配置和策略模式以改变运行时行为;7) 使用工厂和抽象工厂模式创建可扩展的对象;8) 实现依赖注入增强灵活性。这些策略有助于构建适应变化、易于维护的C++框架。
748 2
【YOLOv8改进- Backbone主干】YOLOv8更换主干网络之ConvNexts,纯卷积神经网络,更快更准,,降低参数量!
YOLOv8专栏探讨了针对目标检测的ConvNet创新,提出ConvNeXt模型,它挑战Transformer在视觉任务中的主导地位。ConvNeXt通过增大卷积核、使用GeLU激活、切换到LayerNorm和改进下采样层,提升了纯ConvNet性能,达到与Transformer相当的准确率和效率。论文和代码已公开。
PolarDB产品使用问题之PolarDB MySQL版和PolarDB-X的区别是什么
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问