from typing import List import io from PIL import Image from pydantic import BaseModel from lama_cleaner.server import process from lama_cleaner.server import main#先初始化才能用process from fastapi import FastAPI import uvicorn #urllib3 1.26.4 兼容 class FakeArgs(BaseModel): host: str = "0.0.0.0" port: int = 7860 model: str = 'lama' hf_access_token: str = "" sd_enable_xformers: bool = False sd_disable_nsfw: bool = False sd_cpu_textencoder: bool = True sd_controlnet: bool = False sd_controlnet_method: str = "control_v11p_sd15_canny" sd_local_model_path: str = "" sd_run_local: bool = False local_files_only: bool = False cpu_offload: bool = False device: str = "cpu" gui: bool = False gui_size: List[int] = [1000, 1000] input: str = '' disable_model_switch: bool = True debug: bool = False no_half: bool = False disable_nsfw: bool = False enable_xformers: bool = False enable_interactive_seg: bool = True interactive_seg_model: str = "vit_b" interactive_seg_device: str = "cpu" enable_remove_bg: bool = False enable_anime_seg: bool = False enable_realesrgan: bool = False enable_gfpgan: bool = False gfpgan_device: str = "cpu" enable_restoreformer: bool = False enable_gif: bool = False quality: int = 95 model_dir: str = None output_dir: str = None #初始化model,已经排除了flask部分 main(FakeArgs()) app = FastAPI() @app.on_event("startup") async def app_start(): image_bytes = open('image.jpg', 'rb') mask_bytes = open('mask.jpg', 'rb') # 将字节数据转换为Base64编码的字符串 files = { "image": image_bytes, "mask":mask_bytes } payload = { "ldmSteps": 25, "ldmSampler": "plms", "zitsWireframe": True, "hdStrategy": "Crop", "hdStrategyCropMargin": 196, "hdStrategyCropTrigerSize": 800, "hdStrategyResizeLimit": 2048, "prompt": "", "negativePrompt": "", "croperX": 307, "croperY": 544, "croperHeight": 512, "croperWidth": 512, "useCroper": False, "sdMaskBlur": 5, "sdStrength": 0.75, "sdSteps": 50, "sdGuidanceScale": 7.5, "sdSampler": "uni_pc", "sdSeed": -1, "sdMatchHistograms": False, "sdScale": 1, "cv2Radius": 5, "cv2Flag": "INPAINT_NS", "paintByExampleSteps": 50, "paintByExampleGuidanceScale": 7.5, "paintByExampleSeed": -1, "paintByExampleMaskBlur": 5, "paintByExampleMatchHistograms": False, "p2pSteps": 50, "p2pImageGuidanceScale": 1.5, "p2pGuidanceScale": 7.5, "controlnet_conditioning_scale": 0.4, "controlnet_method": "control_v11p_sd15_canny" }#payload用data resp = process(files=files,payload=payload) # 从 _io.BytesIO 对象中读取字节数据 resp_bytes = resp.read() # 使用 Image.open() 方法打开图片 img = Image.open(io.BytesIO(resp_bytes)) img.show() if __name__ == '__main__': uvicorn.run(app, host='0.0.0.0', port=7860)