o
    Oj	                     @   sN  d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d dlmZ d	Zd
Ze je jeZe jedZe jedZe jedd e	 Zejedgdgdgd ejdeeddd ed ejeejded eZ!e!"  e!#  ed e$dededfde%de%fddZ&dS )    N)Image)DiffusionPipeline)Body)FastAPI)HTTPException)CORSMiddleware)StaticFilesz!black-forest-labs/FLUX.2-klein-9Bcudacache_flux2output_flux2T)exist_ok*POSTzContent-Type)allow_originsallow_methodsallow_headersz/output_flux2)	directory)namezLoading model...)torch_dtypelow_cpu_mem_usage	cache_dirzModel loaded!z	/generate.imagepromptc              	   C   s   | }t d|  dd tj|stjt|}tj|s'tdd|  d| s1tdddt	
|d	}|d
}t||dddtjtdddjd }t  d}tjt|}|| dtj|tdS )Nzimage: T)flushi  u*   입력 파일을 찾을 수 없습니다: )status_codedetaili  u'   prompt가 입력되지 않았습니다.RGB)   r   r      )devicei  )r   r   heightwidthnum_inference_steps	generatorr   z.pngsuccess)statusr   )printospathisabsjoin
SCRIPT_DIRisfiler   stripr   openconvertresizepipetorch	GeneratorDEVICEmanual_seedimagesuuiduuid4
OUTPUT_DIRsaverelpath)r   r   
image_pathinput_imageresultfilename	save_path rA   'htdocs/OOTD2/inpainting/flux2_server.pygenerate2   s4   
	
rC   )'r'   r7   r2   PILr   	diffusersr   fastapir   r   r   fastapi.middleware.corsr   fastapi.staticfilesr   MODEL_IDr4   r(   dirnameabspath__file__r+   r*   	CACHE_DIRr9   makedirsappadd_middlewaremountr&   from_pretrainedfloat16tor1   enable_attention_slicingenable_model_cpu_offloadpoststrrC   rA   rA   rA   rB   <module>   sL    &