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

【小白学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 = 600new_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, 300image = 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) / 2y = (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.5draw.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.mzph.cn/diannao/35627.shtml

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

相关文章

【数据结构】(C语言):栈

栈: 线性的集合。后进先出(LIFO,last in first out)。两个指针:指向栈顶和栈底。栈顶指向最后进入且第一个出去的元素。栈底指向第一个进入且最后一个出去的元素。两个操作:入栈(往栈尾添加元素…

Redis服务

目录 1、介绍 1、redis的特点: 2、缓存 2、安装Redis 1、安装单机版redis 2、redis-cli命令参数 3、redis的增删查改命令 4、redis的相关工具 1、介绍 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库 redis的官网&…

密码学及其应用——专用名词(英语版)

一般术语 1. 密码学 - cryptography 2. 算法 - algorithm 3. 密码系统 - cryptosystem 加密和解密 4. 加密 - encryption 5. 解密 - decryption 6. 加密密钥 - encryption key 7. 解密密钥 - decryption key 8. 数据加密 - data encryption 9. 流密码 - stream ciphe…

摄影师危!AI绘画即将降维打击摄影行业

你还以为AI绘画影响的只是插画师行业吗?错了,摄影行业也即将面临技术洗牌 话不多说,先看一下这几张图 你能一眼看出这是AI画的迪丽热巴吗? 你是不是还以为AI绘画只能画点动漫艺术风格?那你就低估了AI的发展速度&…

java中 前后端不分离的的方法 如何做api接口请求

在传统的Java Web开发中,前后端通常是不分离的,即前端页面和后端API服务是在同一个项目中进行开发和部署的。在这种情况下,我们可以使用Servlet来处理前端的请求,并返回相应的数据。 在本文中,我们将以一个简单的示例…

react开发嵌入react-monaco-editor代码编辑器的方法

Next.js中使用react开发嵌入react-monaco-editor代码编辑器的方法(支持语法高亮) 安装 (base) PS D:\ai-ui> npm install react-monaco-editoradded 1 package, changed 1 package, and audited 1030 packages in 6s273 packages are looking for f…

《数字图像处理》实验报告五

一、实验任务与要求 实现一个自适应局部降噪滤波器;在一幅测试版图像中加入运动模糊和高斯噪声,产生一幅退化图像,采用 deconvwnr 函数实现逆滤波及维纳滤波。 二、实验报告 (一)实现一个自适应局部降噪滤波器 1、自…

ajax请求接口不设置请求头可以请求成功,但是设置请求头之后就跨域,已解决

遇到这个问题我们不要着急找后端,先通过控制台看看有没有报错,控制台的列表是不会有这个红色报错的,所以我们要看下图: 点击这个红色,然后在下面会出现一些信息 很明显是这个请求头timestamp的请求头被屏蔽了&#xff…

Linux C语言程序中线程本地存储变量的内存分配和使用

在多线程中,有一种叫线程本地存储(Thread-Local Storage,TLS)的变量,它是每个线程有且只有一份自己的副本,对于这个线程来说,它是全局变量,可被所有函数共用;因为每个线程…

单机、集群和分布式

目录 1.概述 2.单机服务器 单机版的服务器的性能,设计上的瓶颈? 3.集群 解决瓶颈1: 没有解决瓶颈2: 没有解决瓶颈3: 集群的优点? 集群的缺点? 4.分布式 分布式的优点? 分…

c++笔记提高效率-emplace函数

在C中,标准库容器的emplace方法是一种高效的插入操作,用于在容器中直接构造元素。与insert和push方法相比,emplace方法可以避免不必要的复制或移动操作,因为它直接在容器内部构造元素。下面详细介绍各容器的emplace方法及其用法。…

java常用类(2)

目录 1.String概述 1.1 字符串的不变性 1.2 创建String对象两种方式的区别 1.3 字符串中的构造方法 1.4 字符串判断功能的方法 1.5 字符串获取功能的方法 1.6 字符串转换功能的方法 1.7 字符串替换功能的方法 2.StringBuffer 2.1 构造方法 2.2 插入方法 2.2.1 app…

a-table单元格指定合并以及表格双击编辑以及未填写指定验证功能

文章目录 a-table单元格指定合并以及表格双击编辑以及未填写指定验证功能一、 a-table单元格指定合并1. a-table2. columns3. 图例 二、a-table 表格双击编辑以及未填写验证1. a-table2. js3. 图例 a-table单元格指定合并以及表格双击编辑以及未填写指定验证功能 一、 a-table…

从零开始精通Onvif之加密与认证

💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 概述 安全是Onvif规范的核心部分,它涵盖了加密和认证两大领域。在Onvif标准下,安全措施主要包括:设备访问控…

大模型AI技术实现语言规范练习

人工智能技术可以为语言规范练习提供多种有效的解决方案,帮助学习者更有效地掌握语言规范。以下是一些常见的应用场景。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 智能纠错 利用自然语言处理技术,可以…

DC/AC电源模块一种效率与可靠性兼备的能源转换解决方案

DC/AC电源模块都是一种效率与可靠性兼备的能源转换解决方案 DC/AC电源模块是一种能够将直流电源(DC)转换为交流电源(AC)的设备。它在现代电子设备中扮演着非常重要的角色,因为许多设备需要交流电源才能正常运行。无论…

树形结构的勾选、取消勾选、删除、清空已选、回显、禁用

树形结构的勾选、取消勾选、删除、清空已选、回显、禁用 基本页面: 分为上传文件和编辑的页面 代码实现要点: 上传文件页面: 点开选择范围弹窗,三个radio单选框都为可选状态,默认显示的是第一个单选框(按…

开源C++版AI画图大模型框架stable-diffusion.cpp开发使用初体验

stable-diffusion.cpp是一个C编写的轻量级开源类AIGC大模型框架,可以支持在消费级普通设备上本地部署运行大模型进行AI画图,以及作为依赖库集成的到应用程序中提供类似于网页版stable-diffusion的功能。 以下基于stable-diffusion.cpp的源码利用C api来…

人工智能的未来:畅想智能新时代

人工智能正在改变我们的世界,它将带我们走向何方? 著名神经科学家、Numenta 公司创始人杰夫•霍金斯 Jeff Hawkins 在其著作《人工智能的未来》中,描绘了一幅人工智能发展的光明图景。他认为,人工智能将超越人类智能,…

理解Gobrs-Async相对于CompletableFuture的优势

Gobrs-Async框架针对复杂应用场景下的异步任务编排,提供了一些传统Future或CompletableFuture所不具备的特性和能力,以下是它能够解决的问题和相对于CompletableFuture的优势: 1. **全链路异常回调**: - Gobrs-Async允许为任务…