mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 09:14:35 +02:00
ipadapter masks api support
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user