【小白學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.pswp.cn/diannao/35627.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35627.shtml
英文地址,請注明出處:http://en.pswp.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允許為任務…