【小白学Python】AI生成图片(四)

news2025/1/11 23:49:56

【小白学Python】自定义图片的生成(一)

【小白学Python】自定义图片的生成(二)

【小白学Python】爬取数据(三)


目录

      • ai文生图接口的获取
      • python中调用ai接口
      • 图片拼接
        • 先将图片缩放
        • 拼接图片
      • 文字背景图代码
      • 效果图
      • 总结

在之前python学习的过程中,暂时完成了以下几个步骤:

1.从某乎爬取问答,生成txt文件
2.筛选自己想要的txt数据,读取txt文件
3.根据txt文件的问答数据,生成简易的背景图片。

现在生成的背景图片都比较单一,如下:

在这里插入图片描述

正好这段时间在用一个免费的基于stabble diffusion 3模型的文生图网站,我计划对之前的图片生成的过程进行优化。

调用上述网站的ai接口,图片的上半部分基于图片中的文字生成。


ai文生图接口的获取

F12打开浏览器的开发者工具,之后在网站上写入prompt提示语,选好图片生成的配置之后,点击生成。

在这里插入图片描述

主要需要两个接口来生成图片

  • create 图片生成
  • record-detail 异步获取图片生成

python中调用ai接口

将上述接口的调用参数、地址转换为python代码如下

def createPics(prompt):
    url = ".../create"
    requestsStr = {
        "prompt": prompt,
        "negativePrompt": "",
        "model": "realistic",
        # "model": "visiCanvas",
        # "model": "oldRealistic",
        # "model": "tamarin",
        # "model": "superAnime",
        "size": "1:1",
        "batchSize": "1",
        "imageUrl": ""
    }

    response = requests.post(url, json=requestsStr, headers=headers)

    return response.json().get('data').get('recordUuid')


def getPicLinkUrl(prompt):
    recordUuid = createPics(prompt)
    picState = 'generating'
    while picState != 'success':
        url = "https://.../record-detail"
        params = {
            "recordUuid": recordUuid
        }

        response = requests.get(url, params=params)
        response = response.json()
        print(response)

        sleep(5)
        picState = response.get('data').get('picState')
    return json.loads(response.get('data').get('picUrl'))[0]['picUrl']

输入prompt参数,调用上述方法,图片生成结果如下:
在这里插入图片描述

图片拼接

AI生成的图片风格各异,如果直接当做背景图会影响文字的展示,所以将AI生成的图片,拼在之前生成的文字背景图上面,并调整图片的大小。

先将图片缩放
def editPic(prompt):
    picPath = "aipics/" + str(time.time()) + ".jpg"
    download_image(getPicLinkUrl(prompt), picPath)
    # 打开图片文件
    image = Image.open(picPath)

    # 定义缩放尺寸
    new_width = 600
    new_height = 600

    # 使用Image对象的resize方法进行缩放
    resized_image = image.resize((new_width, new_height))

    # # 保存缩放后的图片
    # resized_image.save(picPath)

    # 关闭原始图片对象(可选步骤)
    image.close()
    return resized_image
拼接图片
def mergePics(image1, image2):
    # 确保两张图片的尺寸相同(或者处理尺寸不同的情况)
    if image1.size[0] != image2.size[0]:  # 检查宽度是否相同
        raise ValueError("Images must have the same width")

    # 计算拼接后图片的尺寸
    width = image1.size[0]
    height = image1.size[1] + image2.size[1]

    # 创建一张新图片,尺寸为拼接后的尺寸
    merged_image = Image.new('RGB', (width, height))

    # 将两张图片粘贴到新图片上
    merged_image.paste(image1, (0, 0))
    merged_image.paste(image2, (0, image1.size[1]))

    # 保存拼接后的图片
    merged_image.save('pics/'+ str(time.time()) + '.jpg')

    # 显示拼接后的图片(可选)
    merged_image.show()

文字背景图代码

def draw_text(text):
    text = remove_between_chars(text, '@', ':')
    # 设置图片大小
    width, height = 600, 300
    image = Image.new('RGB', (width, height), color='black')
    # 加载字体文件,并设置字体大小
    # 注意:确保arial.ttf字体文件路径是正确的
    font = ImageFont.truetype('C:\\Windows\\Fonts\\simhei.ttf', 20)
    # font.color = 'yellow'
    # 创建画布
    draw = ImageDraw.Draw(image)
    # 使用draw的textsize方法获取文本大小
    text_width, text_height = draw.textsize(text, font=font)
    # 计算文字位置,使其居中
    x = (width - text_width) / 2
    y = (height - text_height) / 3.5

    # 此处简单处理 如果将要到达边界,往字符串指定位置增加换行符
    # 这里经过调试,我这里使用22比较合适,后续需要优化
    if text_width > width - 10:
        new_text = text[:25] + "\n\n   " + text[25:]
        # 绘制文字
        x = (width - text_width // 2) / 2.5
        draw.text((x, y), new_text, font=font, fill='white')
    else:
        # 绘制文字
        draw.text((x, y), text, font=font, fill='white')

    #ai生成的图片
    prompt = str.replace(str.replace(text, '\n', ''), 'A: ', ' ')
    image1 = editPic(prompt)
    #合并图片背景图及ai生成的图片
    mergePics(image1, image)

效果图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

总结

由于我的原数据是爬取的QA形式,并没有经过优化,过于简洁,描述过少,其实并不适合AI文字生成图片的prompt,AI的理解大多数都出现了偏差,图片的生成比较随意,需要我的下一步优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1864135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么压缩pdf文件大小,如何压缩pdf文件大小

pdf文件怎么压缩?在当下这个信息爆炸的时代,无论是在工作场所还是校园中,我们经常会面临需要处理大文件的情况,而PDF格式作为一种保留文档结构和布局完整性的理想选择,有时候pdf文件太大,因此,对…

汽车汽配图纸管理、产品研发管理解决方案

汽车汽配图纸管理、产品研发管理解决方案 随着全球汽车市场的快速发展,中国汽车汽配行业迎来了前所未有的发展机遇。然而,在这一过程中,企业也面临着诸多挑战,如研发能力的提升、技术资料管理的复杂性、以及跨部门协作的困难等。为…

ubuntu22.04速装中文输入法

附送ubuntu安装chrome wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb

动画重定向——当给一个人物模型用别人物的动画时,会遇到人物与动画不匹配问题,怎么解决呢?

每日一句:实践出真知,试错方确信 目录 最开始我想的原因! 分析一下动画相关参数 Animator组件参数详解: 人物模型的导入设置参数: Skinned Mesh Renderer组件详解: Skinned Mesh Renderer工作原理 设置Skinned …

【STM32CubeIDE】硬件IIC+AHT20使用

前言 本文主要介绍STM32CubeIDE配置硬件IIC驱动AHT20模块,实现温湿度读取并用串口打印显示在上位机; 软件平台:STM32CubeIDEHAL库 硬件环境:STM32F103ZET6(正点原子战舰V3)AHT20模块 目录 前言AHT20简介软件程序CubeIDE设置AHT2…

ChatGPT/AI助力学术写作-辅助翻译及润色

Nature期刊中的Career column专栏在4月份的时候发表了关于Chatgpt帮助学术写作的几点建议。 一、Three ways ChatGPR helps me in my academic writing 1、优化学术写作 不管使用哪一种AI工具,精确清晰的指令可以帮助使用者得到更好的反馈。例如:I’m w…

【LINUX】内核源码文件系统调用相关摸索

首先,先看看想测试那个系统调用,在应用层,如果使用C语言编程一般我们一来就是open函数,实际在测试的时候,直接用touch xxx.txt然后 echo "xxx" >> xxx.txt,这样就完成了文件创建和写文件的…

MemManage_Handler 问题的解决思路

1、问题 在做一个安全类项目时发现,软件在运行一段时间后会进入"MemManage_Handler",遂开始了一系列查找。 2、解决 (1)查看堆栈数据 查堆栈的数据,发现堆栈也被破坏了,看不出来是执行哪个任务执行导致的…

零基础想学编程,选择哪一门语言更好就业?(非常详细)零基础入门到精通,收藏这一篇就够了_c#就业方向

编程语言的用途广泛,它们各自在不同的领域和应用场景中发挥着重要作用。 零基础初学者在选择编程语言时,可以从就业方向入手选择。 【一一帮助安全学习,所有资源获取处一一】 ①网络安全学习路线 ②20份渗透测试电子书 ③安全攻防357页笔记 …

基于Java微信小程序同城家政服务系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

为什么每一名程序员都应该学习 C++?

掌握 C 可不容易,但一旦你掌握了,就会获得丰厚的回报。 通常,程序员在他们的编程生涯中会使用多种编程语言。然而,我们也看到,有些程序员一直在使用同一种编程语言。例如,我们经常遇到有几十年经验的 Java…

day50---数据结构与算法(五)

四. 高级数据结构与算法设计 4.1 图 1) 概念 图是由顶点(vertex)和边(edge)组成的数据结构,例如 #mermaid-svg-bv3SYpkStIeixcO2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;…

从灵感到成品:使用AI生成博客文章的完整指南

在信息爆炸的时代,每个人都有讲述自己故事的权利和需求。博客作为一种表达方式,不仅能记录个人经历,还能分享知识和观点。然而,许多人在写博客文章时,常常会遇到灵感枯竭、时间不够用或者不知道如何开始等问题。幸运的…

还不到6个月,GPTs黄了

相比起来,人们还不如使用一个足够强大、灵活且通用的AI助手来满足各类复杂需求。更严重的是一些独立GPTs显露出的安全隐患。除此之外,最大的问题在于OpenAI模糊不清的货币化政策。 文章正文 上周,不少人发现微软官网忽然更新了一条“GPT Bu…

星戈瑞Cy5.5 NHS Ester近红外荧光染料2375105-86-3

【星戈瑞stargraydye】以下数据均来自文献资料,星戈瑞暂未进行独立验证, 仅供参考! 在生物医学成像领域,荧光染料的应用逐渐增多。Cy5.5 NHS Ester作为其中的一种,凭借其光学性质和稳定的化学结构,在生物成像、药物追踪以及生物分…

浏览器扩展V3开发系列之 chrome.storage 的用法和案例

【作者主页】:小鱼神1024 【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.storage 是用于存储、获取用户数据的 API。当我们需要持久化存储数据时,比如&…

Ubuntu 20.04安装中文输入法出错:gnome-user-docs-zh-hans安装失败

问题:Ubuntu20.04安装中文输入法出错:gnome-user-docs-zh-hans安装失败 现象: 打开language Support页面的时候,提示install依赖的文件 这个过程中会弹窗提示: The following packages have unmet dependencies:gnome-user-doc…

全网最全的国外心理学资源导航站

想学心理学不知道去哪儿看权威的内容? 中文搜索心理学广告多? Kuakua | 发现心理学网站,应用程序和AI工具https://kuakua.app/explore 从心理学AI工具(国内外)到心理学专业院校、心理学期刊论文、心理学线上课程、心…

论文影响因子

谷歌搜索 谷歌一般只能看到期刊或者会议名字 搜索内容 官方评级网站 LetPub

AI助阵,高考志愿不再“盲选“:告别老土选校法,用科技选未来!

填志愿 即将到来的是高考成绩的公布日,对于今年参加高考的学生们来说,此刻的心情无疑是复杂而紧张的。然而,成绩的公布并非终点,而是一个新的开始。紧接着,学生们将面临一个至关重要的挑战——填报高考志愿。 这一过…