import requests
import io
import base64
from PIL import Image
def encode_image ( image_path ) :
with open ( image_path , " rb " ) as i :
b64 = base64 . b64encode ( i . read ( ) )
return b64 . decode ( " utf-8 " )
# API地址
url = " http://192.168.1.21:7860 "
# 提示词
prompt = " (8k, RAW photo, highest quality),hyperrealistic abstract style portrait of an otherworldly being with metallic skin,glowing orbs for eyes,and intricate fractal patterns emanating from their face,non-representational,colors and shapes,expression of feelings,imaginative,highly detailed,(pink Fluorescent eyeshadow:1.2),eyeliner,makeup,lipstick,watery eyes,(Mole under eye:1.2),(seductive_smile:1.2),XURE Dunhuang Flying XL,1girl,<lora:绪儿 敦煌飞天XL:0.6>, "
# 反向提示词
negative_prompt = " NSFW,blurry,low quality,watermark,monochrome,badhandv4,easynegative,ng_deepnegative_v1_75t,bad proportions,mutated hands and fingers,poorly drawn face,extra limb,missing limb,malformed limbs,disconnected limbs,ugly,floating limbs,extra legs,mutation,bad body,long neck,cross-eyed,text,cleavage, "
# 此处为读取一张图片作为输入图像
encoded_image = encode_image ( ' ../Image/28/1.jpg ' )
encoded_source_image = encode_image ( ' ../Image/1ae93e2587822c291362abf9504cb49ec.jpeg ' )
payload = {
# 模型设置
" override_settings " : {
" sd_model_checkpoint " : " 绪儿-一青十色XL_V2 VAE.safetensors [9f9290ac66] " ,
" sd_vae " : " Automatic "
} ,
# 基本参数
" prompt " : prompt ,
" negative_prompt " : negative_prompt ,
" steps " : 20 ,
" sampler_name " : " DPM++ 2M Karras " ,
" width " : 1024 ,
" height " : 1472 ,
" batch_size " : 1 ,
" n_iter " : 1 ,
" seed " : 1 ,
" cfg_scale " : 3 ,
" CLIP_stop_at_last_layers " : 2 ,
" init_images " : [ encoded_image ] ,
# 面部修复 face fix
" restore_faces " : False ,
# 高清修复 highres fix
" enable_hr " : True ,
" denoising_strength " : 0.5 ,
" alwayson_scripts " : {
" ControlNet " : {
" args " : [
{
" enabled " : True ,
" model " : " ip-adapter_instant_id_sdxl [eb2d3ec0] " ,
" module " : " instant_id_face_embedding " ,
" weight " : 1 ,
" resize_mode " : " Crop and Resize " ,
" guidance_start " : 0 ,
" guidance_end " : 1 ,
" pixel_perfect " : True ,
" processor_res " : 512 ,
" save_detected_map " : True ,
" input_image " : encoded_source_image ,
" control_mode " : " My prompt is more important "
} ,
{
" enabled " : True ,
" model " : " control_instant_id_sdxl [c5c25a50] " ,
" module " : " instant_id_face_keypoints " ,
" weight " : 1 ,
" resize_mode " : " Crop and Resize " ,
" guidance_start " : 0 ,
" guidance_end " : 1 ,
" pixel_perfect " : True ,
" processor_res " : 512 ,
" save_detected_map " : True ,
" input_image " : encoded_image ,
" control_mode " : " ControlNet is more important "
}
]
}
}
}
response = requests . post ( url = f ' { url } /sdapi/v1/img2img ' , json = payload )
r = response . json ( )
image = Image . open ( io . BytesIO ( base64 . b64decode ( r [ ' images ' ] [ 0 ] ) ) )
image . show ( )
image . save ( ' output.png ' )