【小白学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的官网&…

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

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

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…

单机、集群和分布式

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

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

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

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

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

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

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

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

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

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

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

视觉与味蕾的交响:红酒与艺术的无界狂欢,震撼你的感官世界

在浩瀚的艺术海洋中,红酒以其不同的魅力,成为了一种跨界整合的媒介。当雷盛红酒与艺术相遇,它们共同呈现出一场特别的视觉盛宴,让人沉醉在色彩与光影的交织中,感受红酒与艺术的无界碰撞。 雷盛红酒,宛如一件…

AI作画Prompt不会写?Amazon Bedrock Claude3.5来帮忙

最新上线的Claude3.5 Sonnet按照官方介绍的数据来看,在多方面超越了CPT-4o,是迄今为止最智能的模型。 而跟上一个版本相比,速度是Claude 3 Opus的两倍,成本只有其五分之一。 Claude3.5 Sonnet不仅擅长解释图表、图形或者从不完…

Day28:回溯法 491.递增子序列 46.全排列 47.全排列 II 332.重新安排行程 51. N皇后 37. 解数独

491. 非递减子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情…

网络安全学习路线图(2024版详解)

近期,大家在网上对于网络安全讨论比较多,想要学习的人也不少,但是需要学习哪些内容,按照什么顺序去学习呢?其实我们已经出国多版本的网络安全学习路线图,一直以来效果也比较不错,本次我们针对市…

学会python——生成日志信息(python实例十二)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、生成日志信息 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的…

Vue-双向数据绑定指令

v-model指令 双向数据绑定就是当数据设置给表单元素时&#xff0c;修改这个数据会修改表单元素的值&#xff0c; 修改表单元素的值同样也会修改这个数据 <body><div id"app"><input type"text" v-model"name"><p>{{name…

利用 Swifter 加速 Pandas 操作的详细教程

利用 Swifter 加速 Pandas 操作的详细教程 引言 Pandas 是数据分析中常用的库&#xff0c;但在处理大型数据集时效率可能会较低。Swifter 提供了一种简便的方法&#xff0c;通过并行处理来显著加速 Pandas 操作。 Swifter 简介 Swifter 是一个开源库&#xff0c;旨在自动优…

一个项目学习Vue3---创建一个 Vue 应用

步骤1&#xff1a;安装符合要求的node版本 目前官网要求使用的node.js版本为18.3及其以上 所以我们要安装node.js 18.3及其以上版本 NVM安装教程&#xff1a;一个项目学习Vue3---NVM和NPM安装-CSDN博客 若不想安装NVM&#xff0c;可以直接下载适合自己的node版本Node.js — …