首页 > 其他分享 >sd建筑工作流步骤1:文生图

sd建筑工作流步骤1:文生图

时间:2024-03-28 20:34:56浏览次数:41  
标签:img 文生 步骤 image base64 import path os sd

import requests
import base64
import os
from PIL import Image
import io
import json
import random

# 用于将图片编码为Base64格式的函数
def encode_pil_to_base64(image):
    with io.BytesIO() as output_bytes:
        image.save(output_bytes, format="PNG")  # 注意PNG格式
        bytes_data = output_bytes.getvalue()
    return base64.b64encode(bytes_data).decode("utf-8")

# 生成LoRA模型信息字符串的函数
def joinLoraList(loraPath, weight):
    # LoRA路径编码为Base64以便嵌入到提示词中
    loraPathEncoded = base64.b64encode(loraPath.encode("utf-8")).decode("utf-8")
    return f"<lora:{loraPathEncoded}:{weight:.1f}>"

# 主程序
def main():
    # API的URL
    url = "http://127.0.0.1:7860/sdapi/v1/txt2img"

    # 指定LoRA模型路径和权重
    loraModelPath = r"C:\AI\models\Lora\CWG_archisketch_v1.safetensors"
    weight = 1.0

    # 生成LoRA模型信息字符串
    loraInfo = joinLoraList(loraModelPath, weight)

    # 定制的提示词
    customPrompt = "Building, masterpiece, best quality, pre sketch,"

    # 将LoRA信息放在提示词前面
    prompt = loraInfo + " " + customPrompt

    # 获取参考图片,并编码为Base64
    reference_image_dir = r"C:\Users\wujie1\Desktop\图片参考素材"
    latest_file_path = max([os.path.join(reference_image_dir, f) for f in os.listdir(reference_image_dir) if os.path.isfile(os.path.join(reference_image_dir, f))], key=os.path.getctime)
    with Image.open(latest_file_path) as img:
        encoded_image = encode_pil_to_base64(img)
        # 读取最新图片的长宽
        img_width, img_height = img.size

    # 构建请求的payload
    data = {
        "prompt": "<lora:CWG_archisketch_v1:1>,Building,masterpiece,best quality,pre sketch,",
        "negative_prompt": "blurry, lower , 3D",
        "sampler_name": "DPM++ 2M Karras",
        "init_image": encoded_image,

        "steps": 25,
        # 设置图片宽高为最新图片的宽高
        "width": img_width,
        "height": img_height,
        "seed": random.randint(1, 10000000),
    }

    # 发送请求并获取响应
    response = requests.post(url, json=data)
    response_json = response.json()

    # 定义图像保存的路径并保存图像
    save_path = r"C:\Users\wujie1\Downloads\Generated_Image.png"
    with open(save_path, 'wb') as f:
        f.write(base64.b64decode(response_json['images'][0]))
    print(f"图片已保存到: {save_path}")

if __name__ == '__main__':
    main()

 

标签:img,文生,步骤,image,base64,import,path,os,sd
From: https://www.cnblogs.com/zly324/p/18102554

相关文章

  • 2022 Tesla AI Day -特斯拉自动驾驶FSD的进展和算法软件技术之数据以及虚拟
    2022TeslaAIDay-特斯拉自动驾驶FSD的进展和算法软件技术之数据以及虚拟附赠自动驾驶学习资料和量产经验:链接人工智能算法犹如电影的主演,我们很多时候看电影只看到主演们的精彩,但其实电影的创意和呈现都来自于背后的导演和制片等团队。而人工智能算法背后的有关数据的软件,设......
  • SD-WAN如何适应运营商网络
    随着企业网络需求的不断增长,SD-WAN(软件定义广域网)技术成为提升网络灵活性、可管理性和性能的重要工具。然而,要实现SD-WAN的有效部署,必须与运营商网络进行密切集成和适应。以下是SD-WAN如何适应运营商网络的关键方面:多路径与负载均衡:SD-WAN能够利用多种连接路径,包括专线、互联......
  • 在Linux中,当遇到系统卡顿时,你会采取哪些步骤来定位原因?
    当Linux系统出现卡顿时,作为系统管理员或运维人员,可以遵循以下步骤来定位问题原因:观察当前系统状态:远程登录:如果系统仍能接受远程连接,立即通过SSH等方式登录到系统,避免过多的本地交互增加系统负担。检查CPU、内存、磁盘和网络资源使用情况:使用top或htop命令实时查看整体CPU......
  • pocosdk的接入
    Unity3D接入PocoSDKsupportsUnity3Dversion4&5andabove,ngui&ugui&fairygui,C#onlyfornow.Clonesourcecodefrompoco-sdkrepo.复制Unity3D文件夹到你的项目文件夹,一般在assets下.Ifyouareusingngui,justdeletethesubfolderUnity3D/u......
  • SDC可伸缩的高维约束基准和算法
    可伸缩的高维约束基准和算法​ 在过去二十年里,进化约束多目标优化受到了广泛的关注和研究,并且已经提出了一些基准测试约束多目标进化算法(CMOEAs)。特别地,约束函数与目标函数值有紧密的联系,这使得约束特征太单调并且与真实世界的问题不同。因此,之前的CMOEAs不能特别好的解决现实......
  • 基于 MCSDK5.4.8 电机库修改两电阻采样方法
    1.前言在当前使用的电机电阻采样方式中分为单电阻,双电阻,三电阻三种方式,其中在STMCSDK5.4库中支持了两种采样方式,单电阻和三电阻,在市面还存在另外一种采样方式,即双电阻采样,本文讨论的是如何修改现有驱动库支持该种采样方式。2.电流双电阻采样机理图1.双电阻采样结......
  • 在Spring MVC中使用Ajax进行信息验证,你可以使用以下步骤
    在SpringMVC中使用Ajax进行信息验证,你可以使用以下步骤。这里我们以一个常见的用户名唯一性验证为例。首先,你需要在SpringMVC的Controller中创建一个用于处理Ajax请求的方法。这个方法可以接收Ajax请求中的参数,比如用户名,然后进行验证。@ControllerpublicclassUserCo......
  • Pillow教程03:图像处理的基本步骤+分离split+合并merge+混合blend+composite遮罩
    --------------Pillow教程集合---------------Python项目18:使用Pillow模块,随机生成4位数的图片验证码Python教程93:初识Pillow模块(创建Image对象+查看属性+图片的保存与缩放)Pillow教程02:图片的裁剪+复制粘贴+旋转角度+翻转+降噪滤镜(平滑、锐化、边缘检测)Pillow教程03:图像......
  • HarmonyOS SDK 闭源开放能力 —Scan Kit
    1.问题描述ScanKit扫描专用底层码流接口需要鉴权,鉴权失败后功能还能用吗?解决方案如果已经申请过白名单,因为异常导致的鉴权失败会优先放通,保障业务成功。2.问题描述调用ScanKit扫描专用底层码流接口会不会将二维码直接解出来?解决方案不会解析用户数据,ScanKit接口只会检测......
  • ESD保护二极管ESD9B3.3ST5G 以更小的空间实现强大的保护 车规级TVS二极管更给力
    什么是汽车级TVS二极管?TVS二极管是一种用于保护电子电路的电子元件。它主要用于电路中的过电压保护,防止电压过高而损坏其他部件。TVS二极管通常被称为“汽车级”是因为它们能够满足汽车电子系统的特殊要求。在汽车电子系统中,由于车辆启动、熄火、发动机工作等因素,会产生大量......