ipadapter masks api support

This commit is contained in:
Vladimir Mandic
2024-04-20 10:06:32 -04:00
parent ccb2be5239
commit 49ea56059b
5 changed files with 22 additions and 13 deletions
+4 -1
View File
@@ -95,7 +95,7 @@ class APIControl():
def prepare_ip_adapter(self, request):
if hasattr(request, "ip_adapter") and request.ip_adapter:
args = { 'ip_adapter_names': [], 'ip_adapter_scales': [], 'ip_adapter_starts': [], 'ip_adapter_ends': [], 'ip_adapter_images': [] }
args = { 'ip_adapter_names': [], 'ip_adapter_scales': [], 'ip_adapter_starts': [], 'ip_adapter_ends': [], 'ip_adapter_images': [], 'ip_adapter_masks': [] }
for ipadapter in request.ip_adapter:
if not ipadapter.images or len(ipadapter.images) == 0:
continue
@@ -104,6 +104,9 @@ class APIControl():
args['ip_adapter_starts'].append(ipadapter.start)
args['ip_adapter_ends'].append(ipadapter.end)
args['ip_adapter_images'].append([helpers.decode_base64_to_image(x) for x in ipadapter.images])
if ipadapter.masks:
args['ip_adapter_masks'].append([helpers.decode_base64_to_image(x) for x in ipadapter.masks])
del request.ip_adapter
return args
else:
+3 -2
View File
@@ -67,7 +67,6 @@ class APIGenerate():
p.ip_adapter_starts = []
p.ip_adapter_ends = []
p.ip_adapter_images = []
p.ip_adapter_masks = []
for ipadapter in request.ip_adapter:
if not ipadapter.images or len(ipadapter.images) == 0:
continue
@@ -76,7 +75,9 @@ class APIGenerate():
p.ip_adapter_starts.append(ipadapter.start)
p.ip_adapter_ends.append(ipadapter.end)
p.ip_adapter_images.append([helpers.decode_base64_to_image(x) for x in ipadapter.images])
p.ip_adapter_masks.append([helpers.decode_base64_to_image(x) for x in ipadapter.masks])
p.ip_adapter_masks = []
if ipadapter.masks:
p.ip_adapter_masks.append([helpers.decode_base64_to_image(x) for x in ipadapter.masks])
del request.ip_adapter
def post_text2img(self, txt2imgreq: models.ReqTxt2Img):
+7 -3
View File
@@ -45,7 +45,9 @@ def get_images(input_images):
if not isinstance(input_images, list):
input_images = [input_images]
for image in input_images:
if isinstance(image, list):
if image is None:
continue
elif isinstance(image, list):
output_images.append(get_images(image)) # recursive
elif isinstance(image, Image.Image):
output_images.append(image)
@@ -108,9 +110,11 @@ def apply(pipe, p: processing.StableDiffusionProcessing, adapter_names=[], adapt
if hasattr(p, 'ip_adapter_images'):
adapter_images = p.ip_adapter_images
adapter_images = get_images(adapter_images)
if hasattr(p, 'ip_adapter_masks'):
if hasattr(p, 'ip_adapter_masks') and len(p.ip_adapter_masks) > 0:
adapter_masks = p.ip_adapter_masks
adapter_masks = get_images(adapter_masks)
adapter_masks = get_images(adapter_masks)
else:
adapter_masks = []
if len(adapter_masks) > 0:
from diffusers.image_processor import IPAdapterMaskProcessor
mask_processor = IPAdapterMaskProcessor()